SQL - 如何连接其中一列

时间:2013-02-04 14:36:37

标签: mysql sql

  

可能重复:
  Concatenate many rows into a single text string?

MY SQL:我有一个包含3列的表:

╔═════╦═════╦════════╗
║ ID1 ║ ID2 ║ ANSWER ║
╠═════╬═════╬════════╣
║   1 ║   2 ║      4 ║
║   1 ║   2 ║      5 ║
║   1 ║   4 ║      8 ║
╚═════╩═════╩════════╝

我想要一张看起来像这样的表:

╔═════╦═════╦════════╗
║ ID1 ║ ID2 ║ ANSWER ║
╠═════╬═════╬════════╣
║   1 ║   2 ║ 4 + 5  ║
║   1 ║   4 ║ 8      ║
╚═════╩═════╩════════╝

含义:如果我对id1和id2有不同的答案,我希望它们在一行中有一些分隔符(可以是+或其他),每对id1只能有一行,id2

2 个答案:

答案 0 :(得分:1)

在MySQL中,您可以将GROUP_CONCAT()函数与GROUP BY一起使用,以将Answer值连接到同一行:

select id1,
  id2,
  group_concat(answer SEPARATOR ' + ') as Answer
from yourtable
group by id1,  id2

请参阅SQL Fiddle with Demo

这会产生结果:

| ID1 | ID2 | ANSWER |
----------------------
|   1 |   2 |  4 + 5 |
|   1 |   4 |      8 |

答案 1 :(得分:1)

由于您现在已经提到使用MySQL,因此您可以利用GROUP_CONCAT

SELECT ID1, ID2, GROUP_CONCAT(Answer SEPARATOR ' + ') AnswerList
FROM tableName
GROUP BY ID1, ID2