mysql: how to save ORDER BY after LEFT JOIN without reorder?

前端 未结 4 904
你的背包
你的背包 2021-01-22 22:22

I\'ve two table:

1) profiles

+----+---------+
| id | name    |
+----+---------+
|  1 | WILLIAM |
|  2 | JOHN    |
|  3 | ROBERT  |
|  4 | MI         


        
4条回答
  •  天命终不由人
    2021-01-22 23:10

    Try this:

    SELECT
        a.name as `from_name`,
        b.name as `to_name`,
        c.from_id,
        c.to_id
    FROM profiles a
    LEFT JOIN request_for_friendship c
    ON a.id = c.from_id
    LEFT JOIN profiles b
    ON c.to_id = b.id
    GROUP BY a.name,b.name
    ORDER BY a.name,b.name;
    

    Or, if you want one row per "from" name:

    SELECT
        a.name as `from_name`,
        IFNULL(GROUP_CONCAT(b.name),'-none-') as `to_name`,
        IFNULL(c.from_id,'-none-') as `from_id`,
        IFNULL(GROUP_CONCAT(c.to_id),'-none-') as `to_id`
    FROM profiles a
    LEFT JOIN request_for_friendship c
    ON a.id = c.from_id
    LEFT JOIN profiles b
    ON c.to_id = b.id
    GROUP BY a.name
    ORDER BY a.name,b.name
    

提交回复
热议问题