博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql之group by GROUP_CONCAT的保证顺序
阅读量:4040 次
发布时间:2019-05-24

本文共 1343 字,大约阅读时间需要 4 分钟。

groub by 是按照分组,默认不排序,groub后会选择默认排序的第一条进行返回。

如果分组前排序好的数据,取排序好的第一条数据排序,则需要加上limit ,进行强制排序。

SELECT m.*             from (                SELECT                if ( a.status = 'X002', a.fleet_name , null) AS fleet_name,a.id AS enquiryid,a.enquiry_no,b.invoice_no,a.`status`,                a.created_dt,b.pick_time,b.arrival_time,a.created_by,a.expect_offer_time,b.send_company,b.send_province,                b.send_city,b.send_district,b.send_address,b.send_name,b.send_phone,b.recv_company,b.recv_province,                b.recv_city,b.recv_district,b.recv_address,b.recv_name,b.recv_phone,a.publish_mode,a.freight_calculation_type,a.dead_line,a.consig_no                FROM                bill_enquiry a                LEFT JOIN bill_invoice_item b ON a.invoice_id = b.invoice_id                where a.status in ('X001','X002')                and a.consig_id = 6598083868299887637                ORDER BY a.status desc                limit 10000000000) m            GROUP BY m.consig_no

上面的SQL会返回status排序的结果取第一条(即有X002,优先返回X002)。

但是如果查询中加入了GROUP_CONCAT(m.fleet_name) as fleet_names,则返回结果不是按照status排序的第一条数据返回。

GROUP_CONCAT(m.fleet_name order by m.fleet_name) 这个是指的concat按照指定顺序拼接。

下面是2个执行结果的截图,本应该返回X002的,加上GROUP_CONCAT后展示的为X001

最后通过Java程序进行配合处理,分2步groub排序的,跟GROUP_CONCAT的数据2个SQL执行。

SQL中去掉GROUP_CONCAT,如果是X002的则,再查询一下group中拼接的字段,遍历后Map取值后进行赋值。

 

 

 

转载地址:http://nxadi.baihongyu.com/

你可能感兴趣的文章
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>
机器学习实战之决策树(一)
查看>>
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[leetCode By Python] 14. Longest Common Prefix
查看>>