2016-05-10 36 views
1

我建立由[名稱]列,其比較兩個表A中的SQL查詢和B,並返回從表A中不在表乙SQL查詢來比較兩個表用於地名

名稱
Table A 

ID Name Address 
1 A ABC 
2 B XYZ 
3 C PQR 

Table B 
ID Name Gender 
1 A F 
2 B M 
3 D F 

我寫的應該返回從表格中的第三行,因爲它不是在表B中,應該排除所有其他行

之後的查詢是我建

查詢

以上不會返回我期待的結果。 這可以糾正嗎?

回答

1

最簡單的方法:

select * from A where name not in (select name from B) 

更好的辦法:

select * from A where not exists (select 1 from B where B.name = A.name) 
0

使用excpet運營商將幫助

select * from TableA 
    except 
    select * from TableB 
1

「左連接B」 是指在藏在心裏,和關聯如果條件滿足,則記錄在B中。

在你的情況,如果你真的想使用左加入,這裏是它應該是(「=」,而不是'=!)什麼:

Select * from A oa left join B gp ON oa.name=gp.name where gp.name is null

更好的方式是用「不存在'表現明智,或者'除外'如果空值不是問題。

0
SELECT a.* 
FROM A a 
LEFT JOIN B b 
ON a.name = b.name 
WHERE b.name IS NULL