经过一些搜索,我发现以下内容我认为可以解决我的问题: http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php
我在MYSQL中运行以下内容
SELECT p.object_id, GROUP_CONCAT(p.user_id) as users
FROM objects p
GROUP BY p.user_id
我希望得到的数据看起来像这样:
object_id | users
64904 2181103, 2186761
64903 2186757
64902 2186755, 2186756
64901 2185796
64900 2185796
相反,我的数据返回的重复值相同,如下所示:
object_id | users
64904 2181103, 2181103
64903 2186757
64902 2186755, 2186755
64901 2185796
64900 2185796
我的表格如下:
object_id | user_id
64904 2181103
64904 2186761
64903 2186757
64902 2186755
64902 2186756
64902 2186755
64902 2186756
64901 2185796
64900 2185796
有人可以帮助我理解我在这里做错了吗?
答案 0 :(得分:2)
MySQL中的大多数(如果不是全部)聚合函数都可以利用函数调用中的DISTINCT修饰符,如下所示:
GROUP_CONCAT(DISTINCT p.user_id) AS users
COUNT(DISTINCT p.user_id) AS userCount
etc...
答案 1 :(得分:2)
GROUP_CONCAT()
选择DISTINCT
。此外,正如评论中所述,您的小组通过视线关闭。
试试这个:
SELECT p.object_id, GROUP_CONCAT(DISTINCT p.user_id) as users
FROM objects p
GROUP BY p.object_id
答案 2 :(得分:1)
MySQL需要知道要分组的字段,要组合在一起的字段。
如果您想要每个对象的用户列表,那么您希望对object_id
进行分组。
SELECT p.object_id, GROUP_CONCAT(p.user_id) as users
FROM objects p
GROUP BY p.object_id