库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用

在统计库存时,如果一个库存记录有多张入库单,如何获取每条库存记录对应的最新入库单信息成为问题。本文介绍了通过distinct、group by和嵌套结果的组合使用,解决在保持去重的同时获取每个分组内的最新数据,特别是针对库存入库单的最新入库人和时间。
摘要由CSDN通过智能技术生成

这是花了一个小时实践出来的!

网上有特别多的distinct +group by 的比较区别的,几乎没有几篇文章说他们的联合妙用。
步入正题,先说我发现妙用的基于实际问题:
库存与入库单的一个关系业务:在统计库存时,需要带出与库存相关的且是最近的入库单的一个入库人作为库存数据的一个属性
那么问题来了,业务中一个库存记录可能会存在多张入库单与之关联,要去取最新的入库单的信息与库存信息关联,假设关联入库单信息为lastInUserName(最后入库人),不可避免的查出一个重复的库存记录,但实际上数据库只有一条这样的记录,
那咋整: 是的 group by 登场了,我直接group by 库存记录id ,就只会存在一条记录了,group by必须存在。
未满足的要求:我们还需要取最新的库存入库单的信息condition_in,怎么取呢?我们既不能简单升序或降序来排序入库单号、id,实际入库时间来获取到我们想要的结果。
为什么? 因为我们不止一条库存记录,而且 group by 本身是不会排序的,他只会保留最早物理插入数据库的那个符合去重的条件(某些业务可能刚刚需要这样的),和本次要求是不符合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值