【问题标题】:How to group Left Outer Join如何分组左外连接
【发布时间】:2019-07-03 03:31:39
【问题描述】:

我有两个模型,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"

【问题讨论】:

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


    【解决方案1】:

    如果您使用的是 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;
    

    我只包含了您预期实际显示的三列,但您可以根据需要添加其他列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 2011-03-14
      • 2014-09-23
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 2011-09-10
      • 2014-02-24
      相关资源
      最近更新 更多