MYSQL 窗口函数

标签 mysql rank

订单在最终交付给客户之前有多个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

关于MYSQL 窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51019661/

相关文章:

mysql - 计算唯一电子邮件中的域数量

mysql - 按最后 3 个字符排序

pandas - Pandas 按列值排名

django - django模板中查询集的简单排名

java - Lucene:首先不显示精确匹配

php - Mysql 某一用户多列的Rank

java - 遍历继承列表

java - DbUnit Java仅在一次测试中禁用FOREIGN_KEY_CHECKS

php pdo函数将结果作为数组传递并访问

php - PDO 中 fetchColumn() 的非对象错误