我需要弄清楚一些巧妙的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