2013-02-17 79 views
1

下面的問題在面試中問我。我不知道它是否可能或不使用左外連接在這種情況下將表A中的記錄不在表B中左邊的外部加入

CREATE TABLE TableA(Id INT, Name VARCHAR(255)); 
CREATE TABLE TableB(Id INT); 

INSERT INTO TableA(Id, Name) 
VALUES (1, 'Person A'), 
     (2, 'Person B'), 
     (3, 'Person C'), 
     (4, 'Person D'), 
     (5, 'Person E'), 
     (6, 'Person F'); 

INSERT INTO TableB(Id) 
VALUES (1), 
     (2), 
     (3); 

輸出應該

Name 
Person D 
Person E 
Person F 

兩個表。 TableA和Table B.我想要表A中的名稱不在表B中。是否可以通過左外部聯接來完成此操作。用紙和筆我掙扎了幾分鐘,然後我在紙上寫了一個查詢,稍後我發現它是錯誤的。

注意:請不要使用子查詢。我也是這樣做的,面試官要求我通過左外連接來做到這一點。

讓我知道它是否可能不是。

SQL Fiddle

回答

3

聽起來很容易夠

SELECT * FROM TableA a 
LEFT JOIN TableB b on b.Id=a.Id 
WHERE b.ID is null 

這應該給你在表中的比賽。訣竅是認識到你對B方的空行感興趣。

+0

感謝您的回覆我相信它是一個棘手的問題 – ArrayOutOfBound 2013-02-17 05:16:16

-2

您可以使用子查詢?

SELECT Name FROM TableA 
WHERE TableA.ID not in (SELECT TableB.ID From TableB) 
+0

我做到了,他特別要求使用左外連接 – ArrayOutOfBound 2013-02-17 05:14:36

相關問題