2016-09-29 161 views
3

我很欣赏这对你们来说可能非常简单,但有时候JOIN背后的逻辑对初学者来说可能很难。我想从table1中选择“ID”,但只选择那些不在table2中出现的“ID”,“ID”。我测试了左和右,但无法按照我需要的方式工作。我正在使用dashDB。JOIN和SELECT值不包含在表2中

+0

让我们看看你的左连接尝试。 – jarlh

+0

你应该发布你的查询以及.. – Bharat

+0

你好,我不熟悉dashDB,但请看看http://stackoverflow.com/questions/20602826/sql-server-need-join-but-where-not - 等于 – Laazo

回答

1

您可以使用NOT IN和子查询

Select * from table1 where id NOT IN (select id from table2); 
+1

你在开玩笑吗?那简单?我觉得自己像个笨蛋。谢谢@Kugutsumen –

+2

请注意,如果table2的id为NULL,则不会返回任何行。 – jarlh

+0

@jarlh谢谢你,这是一个很好的观点。幸运的是在这种特殊情况下是不可能的,但是还是谢谢 –

1

试试这个...

SELECT * 
FROM table1 
LEFT JOIN table2 ON table1.ID = table2.ID 
WHERE table2.ID IS NULL 
+0

是的,那也行得通。谢谢 –

1

使用下面的脚本。

SELECT t1.ID 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.ID = t2.ID 
WHERE t2.ID IS NULL 
2

我总是喜欢NOT EXISTS做到这一点

Select * from table1 a 
where NOT EXISTS (select 1 from table2 b where a.id = b.id); 

下面是阿龙贝特朗一个优秀的文章来比较的所有方法的性能

Should I use NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT, or NOT EXISTS?

+0

又一个选项:)谢谢@Prdp –

+0

@MikePala - 检查更新它是一篇有用的文章。但是它特定于'SQL SERVER' –