我想在一种SQL语法中使用DISTINCT,NOT EXISTS,adn EXCEPT,但它不起作用。这是我的SQL语法:
SELECT DISTINCT S.ID, S.name
FROM student AS S
WHERE NOT EXISTS(
(SELECT course_id FROM course
WHERE dept_name = 'Biology')
EXCEPT
(SELECT T.course_id FROM takes AS T
WHERE S.ID = T.ID)
);
这就是错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'EXCEPT (SELECT T.course_id FROM takes AS T WHERE S.ID = T.ID))' at line 1
如何使它有效,我无法解决它,伙计们帮助我......
答案 0 :(得分:2)
AFAIK,EXCEPT
中没有MySQL
。使用NOT IN
而不是
SELECT DISTINCT S.ID, S.name
FROM student AS S
WHERE NOT EXISTS(
SELECT course_id FROM course
WHERE dept_name = 'Biology'
AND course_id NOT IN
(SELECT T.course_id FROM takes AS T
WHERE S.ID = T.ID)
);
答案 1 :(得分:2)
EXCEPT
。您可以尝试使用LEFT JOIN
:
SELECT DISTINCT S.ID, S.name
FROM student AS S
WHERE NOT EXISTS(
(SELECT course_id FROM course c left join takes T on S.ID = T.ID
WHERE c.dept_name = 'Biology')
);