千家信息网

group by 查找订单的最新状态 join

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Order:snProcedures:sn,status1、 有订单表和流程表。订单表含有订单的详细信息【假设没有订单状态哈】,每个订单有好多种状态:已付款、处理中、待收货等等。现在的需求可能是查询订
千家信息网最后更新 2026年11月02日group by 查找订单的最新状态 join

Order:sn
Procedures:sn,status
1、 有订单表和流程表。
订单表含有订单的详细信息【假设没有订单状态哈】,每个订单有好多种状态:已付款、处理中、待收货等等。现在的需求可能是查询订单状态是待收货的所有订单的信息。
【答】先找到最新状态是待收货的所有订单,然后和订单表做一个left join,就可以得到了。
一、 先找最新状态是待收货的所有订单。
本来拍脑袋一想是group by order by 取第一条,然后试了一下,发现group by取回来的并不是最新状态的,而是分组后的第一条。这是因为在MySQL中语句的执行顺序是先执行group by 然后执行order by .很明显这就不可能得到最新的一条了。我们可以这样查出每个订单的最新状态
select sn,max(status) from procedures group by sn .
正确的是下面的写法,自己和自己做个join,最后再和order join。
SELECT a.id, a.sn, a.created_at,a.type FROM (SELECT sn, max(created_at) created_at FROM procedures GROUP BY sn ) b JOIN procedures a ON a.sn = b.sn AND a.created_at = b.created_at where a.type=11

select c.*,tmp.type from complaints as c right join (
SELECT a.id, a.sn, a.created_at,a.type FROM (SELECT sn, max(created_at) created_at FROM procedures GROUP BY sn ) b JOIN procedures a ON a.sn = b.sn AND a.created_at = b.created_at where a.type=11
) as tmp on tmp.sn=c.sn

订单 状态 信息 明显 写法 多种 流程 而是 脑袋 语句 这是 需求 面的 顺序 一想 流程表 分组 处理 查询 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网加科技 博彦科技互联网金融 哈尔滨大商圈互联网科技有限公司 中关村互联网科技集团 中国互联网科技工作委员会毛军 互联网最新的科技 合肥互联网科技公司 苏州互联网科技贷款公司 深圳天众互联网科技公司 互联网科技素材视频竖屏 卫星互联网科技股票 成都玖崟互联网科技有限公司乐商圈怎么样 新华互联网科技2019 互联网软件和科技 知域互联网科技有限公司大骗子 电子科技大学互联网创业大赛 乌鲁木齐新华智原互联网科技学校 领航科技大厦互联网公司 珠海东科互联网科技有限公司 凡科互联网科技 互联网科技公司招聘 中国的互联网科技企业的崛起 承德科技产业互联网发展 互联网经济与金融科技 工业互联网展湾科技股份有限公司 银行科技岗属于互联网吗 昆明中奇联合互联网科技 华人运通互联网科技公司 高科技和互联网的现代国家
0