如何組合兩條記錄,它們具有相同的列?例如,給定兩個記錄的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