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

标签 mysql sql database

我想在一种 SQL 语法中使用 DISTINCT、NOT EXISTS 和 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

如何让它工作,我无法解决,大伙帮帮我..

最佳答案

据我所知,MySQL 中没有EXCEPT。使用 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)
    );

关于mysql - 我的 SQL 语法有什么问题?我在其中使用了 DISTINCT 和 EXCEPT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32453348/

相关文章:

mysql - Ubuntu 16.04 更新后无法启动 mysql 服务器

MySQL MONTHNAME() 来自数字

mysql - 选择列中具有第二大值的行

php - 如何使用php表单中的按钮编辑/删除数组数据?

php - 这种标记方法的任何缺点

C# 数据库访问 : Best method to use for getting data

mysql - 插入失败 : Error in MySql syntax in VB. 网络

php - while/foreach 循环更新 mySQL 中的数量

java - 获取数据库数据到TableView

mysql - 想要获得佣金 SQL 表的运行总计