以上是我想解决的问题。首先,我想尝试在sql中使用except子句,并获取orders表中不存在的所有值。这就是我正在尝试的:(暂时忽略列名和其他内容,我只想测试except逻辑)
SELECT Id, Name FROM Customers
EXCEPT
SELECT O.CustomerId as Id, C.Name AS Name FROM Customers C , Orders O
WHERE C.Id = O.CustomerId
但是,我在leetcode上遇到了这个错误,对此我不确定:
Line 3: SyntaxError: near 'SELECT O.CustomerID as Id, C.Name AS Name FROM Customers C , Orders O WHERE C.Id'
我希望从我编写的查询中得到的预期输出是:
Id Name
2 Henry
4 Max
编辑:这是leetcode上的一个问题,在查看它使用的版本后,我发现它是mysql server 5.7.21
2条答案
按热度按时间8yoxcaq71#
我看到你的数据库管理系统是mysql。mysql不支持
EXCEPT
你可以试着用另一种方法NOT IN
将比EXCEPT
架构(mysql v5.7)查询#1
db fiddle视图
如果您的dbms支持
EXCEPT
,我会用JOIN
而不是,
连接两个表是因为JOIN
有更清晰的语义连接两个表。xam8gpfp2#
如果你坚持使用
EXCEPT
,去吧EXCEPT ALL
:但我宁愿用
LEFT JOIN / .. IS NULL
:请参见:
选择其他表中不存在的行