关于 group by 取最新一条数据的方法
背景
做一个有关产品入库最后一次入库产品(最新的记录)的筛选,本意是想通过 group by 取得最后一条(MySql 5.7.30)
原数据:
需要取id 5441678, 所以立马写出这样的SQL:
select id, item_code, order_no
from goods_log
where item_code in ('PZI209HP-C')
group by item_code
运行结果为:
没取到想要的那一列,于是再给它加一个 order by id 的排序:
select id, item_code, order_no
from goods_log
where item_code in ('PZI209HP-C')
group by item_code
order by id desc;
但结果还是和之前一样:
上网查了下,可以通过 MAX 的方法来筛选ID,获得最新的哪一行,所以写下SQL:
select max(id), (order_no)
from goods_log
where item_code = 'PZI209HP-C'
group by item_code
order by id desc;
结果:
咋一看以为是对了,仔细一看, order_no 不对,这条SQL 单单只是把 id 最新的列出来了,既然可以拿到最新的 id,
那么 可以通过 子查询 的方式…,于是改进SQL
select id, item_code, order_no
from goods_log
where id in (select max(id) as id from goods_log where item_code in ('PZI209HP-C') group by item_code)
执行结果:
目的达到了,但应该还有更好的 更优雅的 方法吧,有其它更好的方法吗?
推荐文章: