如何组合两个具有相同列的记录?例如,假设两个记录的parent
列值相同,我想将这两个值组合在一起。 GROUP BY
无法做到这一点,因为它只返回一条记录。
任务必须在Rails中实现。
答案 0 :(得分:1)
给定具有此结构和数据的表messages
:
id parent_id message
-- --------- -------
1 42 Foo
2 42 Bar
然后你可以进行这个SQL查询:
SELECT a.message AS message1,
b.message AS message2
FROM messages a
INNER JOIN messages b ON a.parent_id=b.parent_id
WHERE a.id<b.id;
得到这个结果:
message1 message2
-------- --------
Foo Bar
您需要确保a.id
和b.id
不一致,以免导致结果"Foo Foo"
和"Bar Bar"
,并且您还需要除非您同时需要"Foo Bar"
和"Bar Foo"
结果,否则请订购它们。
您还可以选择直接在查询中执行字符串连接。不同的RDBMS使用不同的语法;对于MySQL我相信它会是:
SELECT concat(a.message, b.message) AS clubbed_message
...
(为了完整性,MSSQL使用+
运算符进行字符串连接,PostgreSQL和SQLite使用||
运算符。)
答案 1 :(得分:0)
据我所知,最好的选择是查询所有它们并在Ruby域中连接它们。
类似的东西:
Model.where(:parent => 1).collect(&:message).join