来自2个不同表的SQL Concat文本(多部分消息)

时间:2018-10-06 15:22:08

标签: php mysql

我正在尝试在PHP中进行查询,该查询将使我将来自2个不同表的行按ID连接在一起。

我的第一个表格是这样的“ 发件箱”。

int mask = 0b111;
int lastBits = readBytes & mask;

我的第二个表是看起来非常相似的“ outbox_multipart ”。

TextDecoded  |  ID   |  CreatorID
Helllo, m..  |  123  |    Martin
Yes, I wi..  |  124  |    Martin

在此示例中,有2条消息均由 3个部分组成。第一部分始终在发件箱表中,其余部分在 SequencePosition 排序的outbox_multipart表中。

所以查询的预期结果是这样。

TextDecoded  |  ID   |  SequencePosition
my name i..  |  123  |         2
s Martin.    |  123  |         3
ll do tha..  |  124  |         2
t tomorrow.  |  124  |         3

这有可能吗?

1 个答案:

答案 0 :(得分:1)

    使用Inner Join在两个表之间
  • ID
  • Group_Concat()函数允许我们以自定义排序的灵活性和选择定界符的方式将一个组中的表达式/列值连接起来。我们可以根据outbox_multipart.TextDecodedOrder By的升序来合并outbox_multipart.SequencePosition;并使用空字符串''作为分隔符。
  • 使用Concat()函数将固定的起始子字符串outbox.TextDecoded连接到Group_concat的结果字符串。

尝试:

SELECT 
  CONCAT(ob.TextDecoded, 
         GROUP_CONCAT(obm.TextDecoded 
                      ORDER BY obm.SequencePosition ASC 
                      SEPARATOR ''
                     )
        ) AS TextDecoded, 
  ob.ID, 
  ob.creatorID
FROM outbox AS ob 
JOIN outbox_multipart AS obm ON obm.ID = ob.ID 
GROUP BY 
  ob.ID, 
  ob.creatorID