如何分组左外连接

时间:2019-07-03 03:31:39

标签: ruby-on-rails postgresql join group-by left-join

我有两个模型,UserTelephone。用户有很多电话。

我在活动管理员列表中,如果用户有两部手机,我希望将它们分组在一起。我需要一个原始的sql查询,而我编写的查询提供了两个单独的行。

我想要什么:

John Legend 123456, 654321

我得到的是

John Legend 123456
John Legend 654321

这是我的查询

      a = "SELECT user.id, user.first_name, user.last_name, telephone.id AS telephone_id, telephone.number AS telephone_number,
      FROM users 
      LEFT OUTER JOIN telephones ON telephones.user_id = user.id
      GROUP BY users.id, telephones.user_id, telephones.number, telephones.id
      ORDER BY user.id DESC"

1 个答案:

答案 0 :(得分:2)

如果您使用的是Postgres 9.0+,则可以在此处使用STRING_AGG函数:

SELECT
    u.id,
    u.first_name,
    u.last_name,
    STRING_AGG(t.number, ',') AS telephone_number
FROM users u
LEFT JOIN telephones t
    ON t.user_id = u.id
GROUP BY
    u.id
ORDER BY
    u.id DESC;

我只包括了您期望的实际显示的三列,尽管您可以根据需要添加其他列。