所以我有一个查询将很多数据拉到一起,我希望它只有一行与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,但是有些数据在第四列中作为不同的值,所以它不会一直有效。
答案 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)
与TSQL中的Stuff For XML相同