MySql:合并具有匹配记录的行

时间:2014-12-01 12:03:49

标签: mysql sql

我的表中有一个用户列表,其中包含与之关联的项目。我希望能够将项目字段合并到一个列表中,或者如果该行具有匹配的用户/电子邮件,则创建另一列。

我在MySQL表中有以下结构:

╔═══════════╦═════════════╦═════════════╦═════════════╦═════════════╦════════════╗
║     ID    ║   User_ID   ║     Item    ║    Date     ║    User     ║   Email    ║  
╠═══════════╬═════════════╬═════════════╬═════════════╬═════════════╬════════════╣
║     1     ║     1       ║   Laptop 1  ║  30th Nov   ║    John     ║ J@test.com ║
║     2     ║     2       ║   Laptop 3  ║  12th Nov   ║    Emma     ║ e@test.com ║
║     3     ║     2       ║   Camera 3  ║  12th Nov   ║    Emma     ║ e@test.com ║
╚═══════════╩═════════════╩═════════════╩═════════════╩═════════════╩════════════╝

我对SQL很新,但我想我需要在列函数中使用某种类型的转置字段?

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:1)

我想你想要group_concat()。就个人而言,我会使用user_id,而不是user/email。或者,也许三者在一起。像这样:

select user_id, user, email, group_concat(item) as items
from table t
group by user_id, user, email;