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