sql 兩張表的相同字段中刷選出不同數據

我們在業務邏輯中,經常會涉及兩張表之間的數據比較,
其中涉及到某張表中獨一份的數據,如下

1 兩張表中相同字段name , 查詢出在表a存在而表b中不存在的數據,並去重

方法一: 
SELECT DISTINCT(a.name) FROM table a
WHERE a.name NOT IN (SELECT DISTINCT(b.name) FROM table b)

方法二:
SELECT DISTINCT(a.name) FROM table a
WHERE NOT EXISTS (SELECT b.name FROM table b WHERE a.name = b.name)

方法三:
SELECT DISTINCT(a.name) FROM table a
LEFT JOIN table b ON a.name = b.name
WHERE b.name IS NULL

方法四:
SELECT DISTINCT(a.name) FROM table a
WHERE (SELECT COUNT(1) as num from FROM table b WHERE a.name = b.name) = 0

2 查詢出字段name , 在表a存在而表b中不存在的數據的數量是多少

方法一: 
SELECT COUNT(DISTINCT(a.name)) FROM table a
WHERE a.name NOT IN (SELECT DISTINCT(b.name) FROM table b)

方法二:
SELECT COUNT(DISTINCT(a.name)) FROM table a
WHERE NOT EXISTS (SELECT b.name FROM table b WHERE a.name = b.name)

方法三:
SELECT COUNT(DISTINCT(a.name)) FROM table a
LEFT JOINtable b ON a.name = b.name
WHERE b.name IS NULL

方法四:
SELECT COUNT(DISTINCT(a.name)) FROM table a
WHERE (SELECT COUNT(1) as num from FROM table b WHERE a.name = b.name) = 0
發佈了55 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章