mysql - group_concat() 不根据数据排序

标签 mysql sql sql-order-by dynamic-sql

排序数据是我想要的,但我没有从该语句的 order by 子句中获得它。

SELECT
    GROUP_CONCAT(DISTINCT
        CONCAT(
            'COUNT((CASE WHEN (`ltd`.`total_pass_pc` =',total_pass_pc,') THEN 1 ELSE NULL END)) AS `TC=',total_pass_pc,'`'
        )
    )INTO @sql
    FROM log_tc_data
    ORDER BY `total_pass_pc`;

group_concattotal_pass_pc 生成的结果是有序的 0 11.1111111 80 33.33333........未排序 我想排序 0 11.11111 33.333333 80......排序顺序

这是其结果的屏幕截图

http://postimg.org/image/yywctdpj3/7cc79088/

最佳答案

您需要定义一个GROUP BY子句,以便在选择数据时,记录将相对于该列名称进行分组。要对其进行排序,您可以在 GROUP_CONCAT 中使用 ORDER BY 试试这个:

SELECT
GROUP_CONCAT(DISTINCT CONCAT('COUNT((CASE WHEN (`ltd`.`total_pass_pc`=',total_pass_pc,') THEN 1 ELSE NULL END)) AS `TC=',total_pass_pc,'`')
  ORDER BY `total_pass_pc`)INTO @sql

FROM log_tc_data;

关于mysql - group_concat() 不根据数据排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988486/

相关文章:

php - 如何根据另一个组合框集合的选定项目来过滤一个组合框集合?

sql - MySQL 到 PostgreSQL : GROUP BY issues

mysql - 将列表值从 int & num 转换/更新/类型转换为字符串

mysql - 在其中添加带有 * 的列名称

mysql - ORDER BY 子句如何从 1 而不是 0 开始对记录进行排序

php - 从 php 更新 sql 表中的字段

c# - 在 C# 中格式化 SQL 友好的日期/时间

sql - SQL 中的 REPLACE 和 Unicode 字符

MySQL ONLY_FULL_GROUP_BY 启用了 CONCAT

mysql - 如何在mysql中按变量排序?