2017-03-23 60 views
0

我想比較兩個數據庫,並獲取其他數據庫中不存在的所有用戶。對於例如數據庫wp_members有正確的成員列表和數據庫成員缺少一些成員,那麼我想比較wp_members和成員用戶名,並找出成員中的哪個用戶名缺失,以便我可以添加它們。 (wp_members用戶名應選)得到所有用戶名不存在於其他表中比較兩個表

下面是DB

http://sqlfiddle.com/#!9/6a795e 

的SQL小提琴和這裏就是我試圖做

SELECT m.username FROM wp_members m, member n WHERE m.username<>n.username and n.siteid=1 group by m.username 

,但沒有得到成功。

回答

0

該問題的一般解決方案可以通過LEFT JOIN表找到並搜索NULL條目來找到。

SELECT table1.id 
FROM table1 
LEFT JOIN table2 ON table2.id=table1.id 
WHERE table2.id IS NULL 
0

你不能用內連接來解決這個問題。只能對符合條件的行進行內部連接,而不是在「不匹配」時進行。

您可以對兩個表執行左外部連接並匹配用戶名,然後在WHERE子句中篩選出對n.username具有NULL值的結果。

SELECT m.username FROM wp_members m LEFT OUTER JOIN members n ON m.username = n.username AND n.siteid = 1 WHERE n.username IS NULL GROUP BY m.username; 

另一種方法是在子查詢中使用NOT IN語句。

SELECT m.username FROM wp_members m WHERE m.username NOT IN (SELECT n.username FROM members n AND n.siteid = 1) GROUP BY m.username; 

具有外連接的解決方案將會更快,但可能更簡單。

+0

我在哪裏添加檢查成員表中的站點ID – user1001176

+0

將其添加到解決方案。 – Juru

+0

Emm數據之間有巨大的差異。我們確定這是正確的方法嗎? – user1001176

相關問題