【问题标题】:MySQL Multiple Join/Subquery QuestionsMySQL 多连接/子查询问题
【发布时间】:2010-12-30 05:52:46
【问题描述】:

大约一年来,我们一直允许我们的用户使用不唯一的用户名和/或电子邮件地址登录(尽管每个用户都有唯一的 ID)。尽管系统可以优雅地处理重复的用户名/电子邮件,但我们最终决定强制使用唯一的用户名和电子邮件地址。我的任务是在 MySQL 中生成一个表,该表将显示重复项和正在使用重复项 id 的表(即依赖于重复项的用户 id 的表,使用 1 表示真,0 表示假)。一旦重复数据被标记为删除,该表将用作参考。简而言之,我希望生成一个类似这样的表格:

|用户ID | 用户名 | 电子邮件 | Exists_in_Table1 | Exists_in_Table2 | Exists_in_Table3 |
-------------------------------------------------- -------------------------------------------------- --------
| 0001.....| 测试1…………| 电子邮件。| 0..........................| 0..........................| 1..........................|
| 0002.....| 测试2…………| 电子邮件。| 0..........................| 1..........................| 1..........................|
| 0003.....| 测试3…………| 电子邮件。| 1..........................| 1..........................| 1..........................|


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

【问题讨论】:

    标签: sql mysql join subquery duplicates


    【解决方案1】:
    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);
    

    【讨论】:

    • 感谢您的回复,这么快!我一回到办公室就试试这个。
    猜你喜欢
    • 2013-03-27
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多