我有两个模型,User
和Telephone
。用户有很多电话。
我在活动管理员列表中,如果用户有两部手机,我希望将它们分组在一起。我需要一个原始的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"
答案 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;
我只包括了您期望的实际显示的三列,尽管您可以根据需要添加其他列。