SQL concat行table2进入列table1

时间:2012-03-08 14:50:55

标签: mysql left-join concatenation

Table1
+----+--------------+
| id |   csvalues   |
+----+--------------+
|  1 |    100;1001; |
|  3 |    300;12;   |
|  4 |    400;44;   |
+----+--------------+


Table2
+----+----------+--------+
| id | csvalues2|table1ID|
+----+----------+--------+
|  1 |  10      |    1   |
|  3 |  30      |    1   |
|  4 |   111    |    3   |
+----+----------+--------+

有这两张桌子。 我不想得到像这样的结果

RESULT
+----+----------------+
| id |   csvalues     |
+----+----------------+
|  1 |100;1001;10;30; |
|  3 |300;12;111;     |
+----+----------------+

有可能吗?我试图左键加入表但无法将Table2.csvalues2放入RESULT.csvalues。

2 个答案:

答案 0 :(得分:2)

这是一个适用于您的示例数据的解决方案。我使用了内连接而不是左连接,因为您的示例意味着您只想包含Table1中具有Table2中相关行的行:

select Table1.id,
  concat(Table1.csvalues,group_concat(Table2.csvalues2 separator ';'),';') as csvalues
from Table1
  inner join Table2 on Table2.table1ID = Table1.id
group by Table1.id;

答案 1 :(得分:1)

我会尝试做类似

的事情
SELECT Table1.ID, CONCAT(Table1.csvalues, ';', (SELECT GROUP_CONCAT(Table2.csvalues2 SEPARATOR ';') FROM Table2 WHERE Table2.table1ID = Table1.ID)) FROM Table1;

在测试数据库中,我将Quicky放在一起,返回了您期望的结果。