我的SQL语法出了什么问题?我在其中使用了DISTINCT和EXCEPT

时间:2015-09-08 08:53:29

标签: mysql sql database

我想在一种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

如何使它有效,我无法解决它,伙计们帮助我......

2 个答案:

答案 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)

MySql中不存在

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