MySQL值在一列中,用逗号分隔

时间:2016-12-05 18:37:41

标签: mysql sql

所以我有一个查询将很多数据拉到一起,我希望它只有一行与x的数量,它只是一个但是列Product ID,这是最后一个,只是全部在一行中,示例数据:

ID  FN      LN      MEM     REP     EMAIL                   PID
001 Test    User    1001    1001    testemail@gmail.com     001
001 Test    User    1001    1001    testemail@gmail.com     002
001 Test    User    1001    1001    testemail@gmail.com     003
001 Test    User    1001    1001    testemail@gmail.com     004
001 Test    User    1001    1001    testemail@gmail.com     005
001 Test    User    1001    1001    testemail@gmail.com     006
001 Test    User    1001    1001    testemail@gmail.com     007

但希望输出为:

001 Test    User    1001    1001    testemail@gmail.com     001,002,003,004,005,006,007

我的SQL知识不是超级强大所以我有点失落,任何帮助都会很棒。我尝试了GROUP BY,但是有些数据在第四列中作为不同的值,所以它不会一直有效。

3 个答案:

答案 0 :(得分:3)

您正在寻找GROUP_CONCAT以及GROUP BY

SELECT ID, LN, EMAIL, GROUP_CONCAT(PID) as products
FROM tableName
GROUP BY ID

或类似的东西。 GROUP_CONCAT(productID)会将它们合并为一行,GROUP BY告诉它如何将这些行组合在一起。

如果删除GROUP BY,您将获得一行并找到所有结果。如果你添加它,它告诉它如何组合行,哪个字段匹配。

答案 1 :(得分:2)

GROUP_CONCAT可能就是你要找的东西。因此,您可以对产品ID进行分组和连接,并通过数据记录的公共属性对其进行分组。

答案 2 :(得分:0)

尝试GROUP_CONCAT()

与TSQL中的Stuff For XML相同