2013-02-17 76 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

相关问题