下面这个问题是我在面试时问到的。我不知道在这种情况下是否可以使用左外部连接
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和表B。我想要表A中不在表B中的名称。可以通过左外部连接来实现这一点吗?我用纸和笔挣扎了几分钟,然后用纸写了一个问题,后来我发现答案是错的。
注意:请不要使用子查询。我也做了同样的事情,面试官让我通过左外部连接来做。
让我知道这是否可能是不可能的。
SQL Fiddle
发布于 2013-02-17 13:14:26
听起来很简单
SELECT * FROM TableA a
LEFT JOIN TableB b on b.Id=a.Id
WHERE b.ID is null这应该会给你表中的匹配项。诀窍是意识到您对B端的空行感兴趣。
发布于 2013-02-17 13:13:52
你可以使用子查询吗?
SELECT Name FROM TableA
WHERE TableA.ID not in (SELECT TableB.ID From TableB)https://stackoverflow.com/questions/14918183
复制相似问题