group_concat(中标单位 order by 发布开始时间)
时间: 2023-08-24 10:58:18 浏览: 37
你的查询中使用了 group_concat 函数,并在其中使用了 ORDER BY 子句。但是在 MySQL 中,group_concat 函数不支持直接在内部进行排序。
如果你希望按照发布开始时间对中标单位进行排序,你可以先使用子查询将中标单位按照发布开始时间进行排序,然后再使用 group_concat 函数。以下是一个示例:
```
SELECT
max(标段名称id) as 标段名称id,
-- 其他列...
(SELECT GROUP_CONCAT(中标单位 ORDER BY 发布开始时间) FROM t1) as 中标单位,
-- 其他列...
FROM
(SELECT
-- 列...
FROM jgw_bid_procurement.res_warn_002005001_detail t1
WHERE t1.deleted = 0
ORDER BY t1.项目负责人身份证号, t1.发布开始时间) a
GROUP BY 项目负责人身份证号;
```
这样,你就可以在子查询中使用 ORDER BY 子句对中标单位进行排序,并在外部的 group_concat 函数中使用它。记得将其他列名补全到查询中。希望这能帮到你!
相关问题
GROUP_CONCAT内部使用order by 举例
GROUP_CONCAT函数是MySQL中的一个聚合函数,用于将多行数据按照指定的顺序连接成一个字符串。在使用GROUP_CONCAT函数时,可以通过ORDER BY子句对连接后的结果进行排序。
下面是一个示例,假设有一个名为students的表,包含以下字段:id, name, score。我们可以使用GROUP_CONCAT函数将学生的姓名按照分数从高到低连接成一个字符串:
SELECT GROUP_CONCAT(name ORDER BY score DESC SEPARATOR ', ') AS student_names
FROM students;
在上述示例中,ORDER BY子句指定了按照score字段降序排序。SEPARATOR关键字用于指定连接字符串的分隔符,这里使用逗号和空格。
group_concat 和order by连用
group_concat是MySQL中的一个聚合函数,它可以将多行数据按照指定的顺序合并成一个字符串。而order by则是用于对查询结果进行排序的语句。当这两个语句连用时,可以在group_concat函数中增加order by语句来进行内部排序,从而控制合并后的字符串的顺序。例如,可以使用以下语句来对t_user表中的数据按照text进行分组,并将每组中的word按照priority进行排序后合并成一个字符串:
select text,GROUP_CONCAT(word ORDER BY priority) word from t_user GROUP BY text
这样就可以得到按照priority排序后的合并字符串。需要注意的是,order by语句必须放在GROUP_CONCAT函数中的括号内,并且在ORDER BY关键字后面指定排序的字段和排序方式。