我建立由[名稱]列,其比較兩個表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中,應該排除所有其他行
之後的查詢是我建
查詢以上不會返回我期待的結果。 這可以糾正嗎?
我建立由[名稱]列,其比較兩個表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中,應該排除所有其他行
之後的查詢是我建
查詢以上不會返回我期待的結果。 這可以糾正嗎?
最簡單的方法:
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)
使用excpet運營商將幫助
select * from TableA
except
select * from TableB
「左連接B」 是指在藏在心裏,和關聯如果條件滿足,則記錄在B中。
在你的情況,如果你真的想使用左加入,這裏是它應該是(「=」,而不是'=!)什麼:
Select * from A oa left join B gp ON oa.name=gp.name where gp.name is null
更好的方式是用「不存在'表現明智,或者'除外'如果空值不是問題。
SELECT a.*
FROM A a
LEFT JOIN B b
ON a.name = b.name
WHERE b.name IS NULL