2014-10-16 49 views
1
assignments: 
id | prospectid 
1 | 1 
2 | 2 
3 | 5 

prospects: 
id | name 
1 | purple 
2 | red 
3 | blue 
4 | orange 
5 | green 

我想要返回一個潛在客戶列表,其中prospect.id在分配中的prospectid列下不存在。簡而言之,我想返回未分配的潛在客戶。SQL:返回未分配的行

所以從上面的例子中,它應該返回:

prospects: 
3 | blue 
4 | orange 

我失敗的SQL:

SELECT * FROM prospects 
WHERE prospects.id != `assignments`.prospectid 

回答

3

您可以使用NOT EXISTS子句

select * 
from prospects p 
where not exists (select null from 
        assignments a 
        where a.prospectid = p.id) 
1

使用LEFT JOIN

SELECT P.id, P.name 
FROM Prospects P 
LEFT JOIN assignments A 
on P.id = A.prospectid 
WHERE A.prospectid is NULL