[英]Getting an Error while using EXCEPT clause
上面所附是我要解決的問題。 首先,我想嘗試在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
如果您堅持使用EXCEPT
,請將該EXCEPT ALL
:
SELECT Id FROM Customers
EXCEPT ALL
SELECT CustomerID FROM Orders;
但是我寧願使用LEFT JOIN / .. IS NULL
:
SELECT C.*
FROM Customers C
LEFT JOIN Orders O ON O.CustomerId = C.Id
WHERE O.CustomerId IS NULL;
看到:
我看到您的dbms是mysql。 MySQL不支持EXCEPT
您可以嘗試使用NOT IN
另一種方式比EXCEPT
容易
模式(MySQL v5.7)
CREATE TABLE Customers(
id int,
Name varchar(50)
);
INSERT INTO Customers VALUES (1,'Joe');
INSERT INTO Customers VALUES (2,'Henry');
INSERT INTO Customers VALUES (3,'Sam');
INSERT INTO Customers VALUES (4,'Max');
CREATE TABLE Orders(
id int,
CustomerId int
);
INSERT INTO Orders VALUES (1,3);
INSERT INTO Orders VALUES (2,1);
查詢#1
SELECT Id, Name
FROM Customers
WHERE Id NOT IN (
SELECT O.CustomerID
FROM Orders O
);
| Id | Name |
| --- | ----- |
| 2 | Henry |
| 4 | Max |
如果您的DBMS支持EXCEPT
,我會使用JOIN
代替,
連接兩個表,因為JOIN
有一個比較清晰的語義來連接兩個表。
SELECT Id, Name
FROM Customers
EXCEPT
SELECT O.CustomerID as Id, C.Name AS Name
FROM Customers C JOIN Orders O ON C.Id = O.CustomerID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.