2011-01-19 98 views
0

如何组合两条记录,它们具有相同的列?例如,给定两个记录的parent列值是相同的,我想结合这两个。这不可能与GROUP BY,因为它只会返回一条记录。将同一列中具有相同列值的2条记录结合起来

这个任务必须在Rails中实现。

+3

什么意思“俱乐部“ 一个记录? – 2011-01-19 16:21:23

回答

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.idb.id是不一样的,这样你就不会得到结果"Foo Foo""Bar Bar",并且还需要除非你想同时"Foo Bar""Bar Foo"结果进行排序。

您也可以选择直接在查询中执行字符串连接。不同的RDBMS使用不同的语法; MySQL的,我相信这将是:

SELECT concat(a.message, b.message) AS clubbed_message 
     ... 

(为了完整起见,MSSQL使用+操作字符串连接和PostgreSQL和SQLite使用||操作。)

0

据我所知,最好的选择是查询所有它们并将它们连接在Ruby land中。

喜欢的东西:

Model.where(:parent => 1).collect(&:message).join
相关问题