У меня есть таблица, которая содержит student_id
, course_id
а также result
, Структура таблицы следующая
мне нужно получить course_id
результат равен 0, а другое условие — результат не может быть 1 для этого курса.
В этом изображении course_id
633 имеет оба result
0 и 1. так что частное course_id
Не получить из этого стола.
С Уважением,
Джон
Я надеюсь, что это то, что вы ищете:
SELECT student_id,course_id,SUM(CASE WHEN result=1 THEN 1 ELSE 0 END) as 0Count
FROM TableName
GROUP BY student_id,course_id
HAVING 0Count=0
Объяснение:
Запрос вернет студентов с result=0
а у кого нет result=1
для этого курса.
Пример вывода:
student_id course_id result
3061 663 0
3061 663 1
3062 664 1
3063 665 0
Результатом будет:
STUDENT_ID COURSE_ID 0COUNT
-----------------------------------
3063 664 0
SELECT course_id FROM table_name WHERE result <> 1
редактировать: неиспользованные выборы, где выгнали
Ах я вижу. Я думаю, что вы ищете этот код
SELECT course_id FROM table_name WHERE result = 0 AND result NOT LIKE "%1%";
Дайте мне знать, как это работает для вас.
Попробуйте этот запрос:
SELECT DISTINCT t1.course_id
FROM table_name t1
WHERE t1.result = 0
AND NOT EXISTS (
SELECT 1
FROM table_name t2
WHERE t2.course_id = t1.course_id
AND t2.result = 1);
Попробуй это
SELECT *
FROM TABLE_NAME
WHERE course_id NOT IN
(SELECT course_id
FROM TABLE_NAME
WHERE RESULT=0
AND course_id IN
(SELECT course_id
FROM TABLE_NAME
WHERE RESULT=1))