【问题标题】:Left Join on same table multiples times with 2 ids with MySQL使用 MySQL 在同一个表上多次左加入 2 个 id
【发布时间】:2019-07-02 11:28:45
【问题描述】:

我有这个 SQL 请求:

SELECT mailbox.*,
       user.picture, user.firstname, user.lastname
FROM mailbox 
LEFT JOIN user ON user.id = mailbox.sender_id
WHERE mailbox.sender_id = 54 OR mailbox.receiver_id = 54

我需要另一个LEFT JOIN 像这样在receiver_id 上:

LEFT JOIN user ON user.id = mailbox.receiver_id

从用户那里获取信息,但我已经通过我的第一个 LEFT JOIN 从用户那里获取了信息

那么下次如何从用户表中获取信息呢?

【问题讨论】:

    标签: mysql sql join left-join


    【解决方案1】:

    我想你想要:

    SELECT m.*,
           us.picture, us.firstname, us.lastname,
           ur.picture, ur.firstname, ur.lastname
    FROM mailbox m LEFT JOIN
         user us
         ON us.id = m.sender_id LEFT JOIN
         user ur
         ON ur.id = m.receiver_id 
    WHERE 54 IN (m.sender_id, m.receiver_id);
    

    注意:这里你可能不需要LEFT JOIN。接收者和发送者 id 列可能包含有效的用户值。

    【讨论】:

      【解决方案2】:

      如果我正确理解了您的问题,那么这应该有效:

      SELECT mailbox.*, u1.picture, u1.firstname, u1.lastname, u2.picture, u2.user.firstname, u2.lastname
      FROM mailbox 
      LEFT JOIN user u1 ON u1.id = mailbox.sender_id
      LEFT JOIN user u2 ON u2.id = mailbox.receiver_id
      WHERE mailbox.sender_id = 54 OR mailbox.receiver_id = 54
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-14
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多