1

下面的问题是在我的采访中被问到的。我不知道在这种情况下是否可以使用左外连接

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

两个表。表 A 和表 B。我想要表 A 中不在表 B 中的名称。是否可以通过左外连接来执行此操作。我用纸和笔挣扎了几分钟,然后我在纸上写了一个查询,后来我发现错了。

注意:请不要使用子查询。我做了同样的事情,面试官让我通过左外连接来做到这一点。

让我知道它是否可能。

SQL小提琴

4

2 回答 2

3

听起来很容易

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

那应该给你表中的匹配项。诀窍是要意识到您对 B 侧的空行感兴趣。

于 2013-02-17T05:14:26.193 回答
-2

您可以使用子查询?

SELECT Name FROM TableA 
WHERE TableA.ID not in (SELECT TableB.ID From TableB)
于 2013-02-17T05:13:52.013 回答