使用 GROUP_CONCAT 和 DISTINCT 的 MySql 查询

标签 mysql sql group-by group-concat

这是我正在做的一个示例查询。它产生 1,A,1,A,3,B,2,B,4,C,4,C

SELECT GROUP_CONCAT(CONCAT(ID, ','), Value ORDER BY Value) FROM TableName

这是一个 SQL Fiddle Demo .

我想在 Value 列上调用 DISTINCT 以便它输出 1,A,2,B,4 ,C 代替。

这可能吗?我尝试的每件事都会给我一个错误。

最佳答案

要获得 distinct 组合 Id, Value,您需要GROUP BY value 并选择 MIN(ID) 在子查询中,然后按照与您相同的方式在外部查询中选择 GROUP_CONCAT

像这样:

SELECT GROUP_CONCAT(CONCAT(ID, ','), Value ORDER BY Value)
FROM
(
  SELECT value, MIN(ID) AS ID
  FROM tablename
  GROUP BY value
) AS t;

Updated SQL Fiddle Demo

这会给你:

|      RESULT |
---------------
| 1,A,2,B,4,C |

关于使用 GROUP_CONCAT 和 DISTINCT 的 MySql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214301/

相关文章:

mysql - 我想获取两个特定列之间的列的值

mysql - 复合索引的第一列是否需要另一个索引?

MySQL,将数据从行移动到列

hadoop - HIVE:INSERT 上的列引用无效。在选择中工作,而不是在与插入结合时

带有secure_file_priv问题的MySQL数据导入

java - Hibernate:设置固定参数是一个好习惯吗?

MySQL 显示状态

mysql - 在 MySQL 中选择更新表数据

SQL 简单连接,我很难过

python - 如何按一列分组并对另一列的值进行排序?