возврат id повторяющихся записей из базы данных postgresql

У меня есть база данных

ids_of_subject_section name_of_subject section topic subtopic     
1   "Математика"    "Арифметика"    "Дробные числа" "Сложение и вычитание дробей"
2   "Математика"    "Алгебра"   "Прогрессии"    "Геометрическая прогрессия"
3   " Алгебра " " Математика "  " Прогрессии "  " Числовые последовательности "
33  " Алгебра " " Математика "  " Прогрессии "  " Арифметическая  прогрессия "
37  " Алгебра " " Математика "  " Прогрессии "  " Геометрическая прогрессия "

Моя задача получить список id предметов,которые уже находятся в таблице. То есть, при запросе

SELECT ids_of_subject_section from table_subject_topics_exams
where exists (SELECT * FROM ( VALUES  ( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' )
) as t (digit_number_1, digit_number_2, digit_number_3,digit_number_4)
where t.digit_number_1=table_subject_topics_exams.name_of_subject            ) 
             ;

29 троек идущих подряд, 4 раза цифру 33, 4 раза цифру 37.

ПОдскажите: как мне надо запрос улучшить? Пока я получаю лишь 3,33,37


Ответы (1 шт):

Автор решения: Akina
SELECT t1.ids_of_subject_section 
FROM table_subject_topics_exams t1
JOIN ( VALUES  
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Числовые последовательности ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Арифметическая  прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' ),
( ' Алгебра ' , ' Математика ' , ' Прогрессии ' , ' Геометрическая прогрессия ' )
) AS t2 (digit_number_1, digit_number_2, digit_number_3,digit_number_4)
ON t2.digit_number_1=t1.name_of_subject /* ??? а не все 4 поля? */
;
→ Ссылка