возврат 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 поля? */
;