我有一张这样的表:
Name | Note |
--------------------------------------
John Doe | Smells like cheese |
Kelly Smith | Smells like ham |
Richmond White | Smells like apples |
John Doe | Sounds like trumpet |
Kelly Smith | sounds like tuba |
我在这里找到了部分答案:delete duplicated row and merge cell value mysql,但这只返回第二列中数据的第一次出现。我需要像这样连接它:
Name | Note |
--------------------------------------
John Doe | Smells like cheese |
| Sounds like trumpet |
--------------------------------------
Kelly Smith | Smells like apples |
| Sounds like Tuba |
--------------------------------------
此外,我想在“注释”栏中保留换行符。
提前感谢任何见解!
答案 0 :(得分:2)
您可以使用GROUP_CONCAT()
进行字符串聚合,例如
SELECT name, GROUP_CONCAT(Note) note
FROM table1
GROUP BY name
这将产生以下输出:
+----------------+----------------------------------------+ | name | note | +----------------+----------------------------------------+ | John Doe | Smells like cheese,Sounds like trumpet | | Kelly Smith | Smells like ham,sounds like tuba | | Richmond White | Smells like apples | +----------------+----------------------------------------+
这是 SQLFiddle 演示
此外,我想在“备注”栏中保留换行符。
这是一个演示问题,应该在您的客户端代码中完成。例如,在php中,当您迭代结果集并发出正确的换行符时,您可以explode()
note
列值(如果它处于文本模式,则可能为\n
{{1}如果它是HTML输出,则在表格或</br>
或其他内容中分隔单元格。
但是如果你想将分隔符更改为逗号以外的任何内容(例如div
),你可以使用\n
子句
SEPARATOR