Mysql, как получить все строки из таблицы, что поле, не имеющее определенного значения ..?

У меня есть таблица, которая содержит student_id, course_id а также result, Структура таблицы следующая

введите описание изображения здесь

мне нужно получить course_id результат равен 0, а другое условие — результат не может быть 1 для этого курса.

В этом изображении course_id 633 имеет оба result 0 и 1. так что частное course_id Не получить из этого стола.

С Уважением,
Джон

-1

Решение

Я надеюсь, что это то, что вы ищете:

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

SQL Fiddle

Объяснение:

Запрос вернет студентов с 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
1

Другие решения

    SELECT course_id FROM table_name WHERE result <> 1

редактировать: неиспользованные выборы, где выгнали

0

Ах я вижу. Я думаю, что вы ищете этот код

SELECT course_id FROM table_name WHERE result = 0 AND result NOT LIKE "%1%";

Дайте мне знать, как это работает для вас.

0

Попробуйте этот запрос:

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);
0

Попробуй это

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))
0
По вопросам рекламы [email protected]