2009-12-27 140 views
2

大约一年以来,我们一直允许用户使用不唯一的用户名和/或电子邮件地址登录(尽管每个用户都有唯一的ID)。虽然系统优雅地处理重复的用户名/电子邮件,但我们已决定最终实施唯一的用户名和电子邮件地址。我一直负责在MySQL中生成一个表格,这些表格将显示重复项和正在使用副本ID的表格(即表格依赖于副本的用户ID,使用1表示true,false表示0)。一旦重复数据标记为删除,此表格将作为参考。总之,我期望生成如下表格:MySQL多重加入/子查询问题

| User_id | 用户名| 电子邮件| Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
--------------------------------------------- -------------------------------------------------- ------------
| 0001 ..... | test1 ......... | 电子邮件。| 0 .......................... | 0 .......................... | 1 .......................... |
|技术..... | test2 ......... | 电子邮件。| 0 .......................... | 1 .......................... | 1 .......................... |
| 0003 ..... | test3 ......... | 电子邮件。| 1 .......................... | 1 .......................... | 1 .......................... |


这是如何实现的并不重要。由于我的SQL技能有点欠缺,我打算以编程方式使用PHP和一些简单的SQL查询来完成此操作。但是,我相信单个SQL查询或一系列查询(不使用PHP)是最干净的方法。我知道如何查询重复项,但我似乎无法弄清楚如何查询多个表,并以适当的方式通过用户ID加入它们。我非常感谢所有帮助。谢谢。

回答

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); 
+0

谢谢你,如此快速的回应!我一回到办公室就会尝试。 – 2009-12-27 08:12:40