俩个表合并,相同id取最新时间

例如:20220408这个分区的数据需要和20220409这个分区做合并

20220408这个分区有订单(order_number=1)的数据,有三条(不同商品的),订单处理状态是【未发货】

20220409这个分区有订单(order_number=1)的数据,有三条(不同商品的),订单处理状态是【发货】

我现在需要的是,这俩个分区做合并,取新分区时间的订单,也就是分区为20220409的三条不同商品订单,请order_number=1的数据,有那位大佬可以提供一个思路

总结:订单明细表,每个订单会有不同的商品,这些商品对应同一个订单号,不同分区的数据需要合并,取最新时间的订单数据

逆天邪神 发布于 2022-4-9 21:19 (编辑于 2022-4-9 21:27)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
数码天空Lv4初级互助
发布于2022-4-9 21:47(编辑于 2022-4-9 22:07)

先合并订单明细表,根据“订单号”分组、每个分组内在根据“时间字段”排序后取最新一条:

MS SQL语句示例

select * from (select ROW_NUMBER() over(partition by 订单号 order by 时间字段 desc) RowNum, * from 订单明细表1,订单明细表2) as A  where RowNum = 1

MySQL语句示例

select * from (select * from 订单明细表1,订单明细表2 order by 时间字段 desc) as A group by 订单号,商品,订单处理状态

  • 逆天邪神 逆天邪神(提问者) 这个只能取到一条数据,我之前就是用的这个方法
    2022-04-09 22:07 
  • 数码天空 数码天空 回复 逆天邪神(提问者) 除了时间不同其他字段相同的最新记录不就是一条吗
    2022-04-09 22:16 
  • 逆天邪神 逆天邪神(提问者) 回复 数码天空 不是一条,是多条,最新时间的订单会对应多个商品
    2022-04-09 22:18 
  • 数码天空 数码天空 回复 逆天邪神(提问者) 除了按“订单号”分组,可以partition by后面多加字段,如select * from (select ROW_NUMBER() over(partition by 订单号,商品名,订单处理状态 order by 时间字段 desc) RowNum, * from 订单明细表1,订单明细表2) as A where RowNum = 1
    2022-04-09 22:23 
  • 逆天邪神 逆天邪神(提问者) 回复 数码天空 收到,我试试
    2022-04-09 22:25 
  • 2关注人数
  • 412浏览人数
  • 最后回答于:2022-4-9 22:07
    请选择关闭问题的原因
    确定 取消
    返回顶部