如何组合两条记录,它们具有相同的列?例如,给定两个记录的parent
列值是相同的,我想结合这两个。这不可能与GROUP BY
,因为它只会返回一条记录。将同一列中具有相同列值的2条记录结合起来
这个任务必须在Rails中实现。
如何组合两条记录,它们具有相同的列?例如,给定两个记录的parent
列值是相同的,我想结合这两个。这不可能与GROUP BY
,因为它只会返回一条记录。将同一列中具有相同列值的2条记录结合起来
这个任务必须在Rails中实现。
给定一个表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使用||
操作。)
据我所知,最好的选择是查询所有它们并将它们连接在Ruby land中。
喜欢的东西:
Model.where(:parent => 1).collect(&:message).join
什么意思“俱乐部“ 一个记录? – 2011-01-19 16:21:23