我需要弄清楚一些巧妙的MySQL代碼片段,這將允許我輕鬆查看兩個表,即表中的ID(如果它們存在)或NULL(空)或空(如果它們不存在)。查找數據庫中缺失的數據
我有一個用戶表和一個遺留表,手動比較之外我無法弄清楚如何使它們出現在一張表中,所以我可以比較。我很想看到的是這樣的:
+----------------------------+
| user_id | email | uid |
| 14 | [email protected] | 26 |
| 16 | [email protected] | NULL |
+----------------------------+
我知道有一種方法可以包括NULL或空值,但我不知道它是什麼。這裏是我的精神錯亂的SQL查詢,到目前爲止,是的,我知道這是可怕的做子查詢的內部子查詢:
select uid from users where mail IN (
select email from legacy_users where id NOT IN (
select sourceid from migrate_map_users
)
);
這裏有,legacy_users => migrate_map_users => users
涉及三個表。中間只是一個連接兩個的m2m。 legacy_users和用戶都有一個電子郵件列。和他們自己的id版本。
謝謝大家!
啊,你是對的。我想我正在尋找的是一個完整的外部聯接。您的鏈接提供了一個在MySQL – 2010-09-30 20:43:28
中執行此操作的配方@Chuck Vose - FULL OUTER應提供_both_表中的所有記錄,而不管另一個記錄是否具有相應的記錄。 – Oded 2010-09-30 20:45:11
MySQL不支持FULL OUTER JOIN語法。 – 2010-09-30 20:46:15