博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
group by 查找订单的最新状态 join
阅读量:6983 次
发布时间:2019-06-27

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

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

转载于:https://blog.51cto.com/fulin0532/2122936

你可能感兴趣的文章
捷微——开源微信开发平台
查看>>
R语言grid包中viewport的概念
查看>>
maven3 使用jetty插件热部署web项目不能修改静态资源的原因
查看>>
生活感悟(1)
查看>>
redis与mysql数据同步
查看>>
js获取url传递参数
查看>>
TF-IDF原理及使用
查看>>
jQuery中bind方法与live方法区别
查看>>
Android TCP/IP Socket Test
查看>>
分布式锁方案论证与实现
查看>>
海外邮件屡屡退信,使用海外邮件中继势不可挡
查看>>
ExtJS中Controller类的动态加载.
查看>>
读文档啊jfinal
查看>>
MAc常用命令
查看>>
js函数没有重载
查看>>
团队管理的“五大核心要素”
查看>>
linux下vi命令大全
查看>>
插入排序
查看>>
android 简易播放器实现
查看>>
职场人:跳槽规划三点注意不可忽略
查看>>