大约一年以来,我们一直允许用户使用非唯一的用户名和/或电子邮件地址登录(尽管每个用户都有唯一的ID)。虽然系统优雅地处理重复的用户名/电子邮件,但我们决定最终强制使用唯一的用户名和电子邮件地址。我的任务是在MySQL中生成一个表,它将显示重复项和使用重复ID的表(即表依赖于副本的用户ID,使用1表示true,0表示false)。一旦重复数据被标记为删除,该表将用作参考。简而言之,我希望生成一个类似这样的表:
| User_id | 用户名| 电子邮件| Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
如何实现这一点无关紧要。由于我的SQL技能有些缺乏,我打算使用PHP和一些简单的SQL查询以编程方式执行此操作。但是,我相信单个SQL查询或一系列查询(不使用PHP)是最干净的方法。我知道如何查询重复项,但我似乎无法弄清楚如何查询多个表并以适当的方式通过用户ID加入它们。我感谢任何和所有的帮助。谢谢。
答案 0 :(得分:2)
SELECT u.User_id, u.Username, u.Email,
IF(t1.User_id IS NULL, 0, 1) AS Exists_in_Table1,
IF(t2.User_id IS NULL, 0, 1) AS Exists_in_Table2,
IF(t3.User_id IS NULL, 0, 1) AS Exists_in_Table3
FROM Users u
LEFT OUTER JOIN Table1 t1 USING (User_id)
LEFT OUTER JOIN Table2 t2 USING (User_id)
LEFT OUTER JOIN Table3 t3 USING (User_id);