mysql - MYSQL 窗口函数
问题描述
在最终交付给客户之前,订单有多个 order_status。有时客户会从不同的来源下多个订单。我们接受一个订单,但我们拒绝另一个订单。我想知道当重复订单被取消时,接受订单的最新订单状态是什么。
LEFT JOIN(
SELECT order_id AS order_id,order_status,max(addtime(`timestamp`,'05:30:00')) AS timestamp
FROM pe2.order_history
GROUP BY 1,2
) oh ON oh.order_id = ord.order_id AND oh.timestamp <= c.time.
c.time. is duplicate order cancellation time.
解决方案
我们得到想要的客户的订单,然后我们得到同一订单的最新状态,也就是取消重复订单之前的状态:
SELECT order.*,
(SELECT order_status FROM order_history AS oh
WHERE order_id = order.id AND timestamp <= cancel_time
ORDER BY timestamp DESC LIMIT 1) AS last_status
FROM order
WHERE order.ID = accepted_order
推荐阅读
- glsl - OpenGL片段插值公式
- jquery - 如何在页面上显示非活动记录
- javascript - (Vue.js | Jest | Babel) 导入特定 vue 文件时出现意外令牌
- python - 一个字符串到上和下
- c# - 如何使用 C# 解密实体框架中的数据,在 SQL Server 中使用对称密钥和证书加密?
- time-series - 访问 Axon 中的所有(历史)事件
- ios - CloudKit 通知的动态 alertBody
- python - 在 django 中进行高级搜索的正确方法
- eclipse - 如何在 Eclipse 中禁用/不显示向导?
- reactjs - 在 React Native 中呈现逗号分隔的值字符串