mysql - 如何在 group_concat 中获取唯一值?

标签 mysql

经过一些搜索,我发现以下内容可以解决我的问题: 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

有人可以帮助我理解我在这里做错了什么吗?

最佳答案

大多数(如果不是全部)MySQL 中的聚合函数都可以在函数调用中利用 DISTINCT 修饰符,如下所示:

GROUP_CONCAT(DISTINCT p.user_id) AS users
COUNT(DISTINCT p.user_id) AS userCount
etc...

关于mysql - 如何在 group_concat 中获取唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621155/

相关文章:

php - 从 PHP 脚本运行 mysqldump 不起作用,但可以在 SSH 上运行

mysql - 选择每个字段都包含多个值的语句

php - 从具有相同结构的不同表中获取结果

mysql - 用于日志记录的数据库架构

php - Flex - 增加 PHP 服务函数调用的超时

MySQL从WP_PostMeta行到列的查询

mysql - 使用 MySQL 检索小时的第一个和最后一个条目

php - 声明变量 MySQL

mysql - Logback db appender mysql连接错误

mysql - 使用 mysql 查询表中的上一个和下一个 id