mysql - 如何在 INNER JOIN 语句中获取 MAX 日期
问题描述
我想获取在单独的表“order_status_change”中记录状态的订单状态。使用以下脚本,我能够获取所有记录,但不能获取最新状态。(需要 max(status change_date) 的 order_item_ID 状态。
SET @UserID = 160;
SET @OrderDateTime = '2018-11-13 09:23:45';
SELECT
order_items.ORDER_ITEM_ID,
order_price.ORDER_ITEM_TOTAL_PRICE,
order_status_change.ORDER_STATUS
FROM order_items
INNER JOIN order_price ON order_price.ORDERP_ITEM_ID = order_items.ORDER_ITEM_ID
INNER JOIN order_status_change ON order_status_change.ORDER_ITEM_ID = order_items.ORDER_ITEM_ID
WHERE ((SELECT A.A_User_ID from A WHERE A.A_USER_ID = @UserID) AND (DATE(order_items.ORDER_REQUIRED_DATE_TIME) = DATE(@OrderDateTime)))
如果我使用 Max(order_status_change.STATUS_CHANGE_DATE) 那么我只会得到一条记录。我通过查看此处的不同示例修改了查询,但没有工作。
SELECT
order_items.ORDER_ITEM_ID,
order_price.ORDER_ITEM_TOTAL_PRICE,
order_status_change.ORDER_STATUS
FROM order_items
INNER JOIN order_price ON order_price.ORDERP_ITEM_ID = order_items.ORDER_ITEM_ID
INNER JOIN
(SELECT MAX(order_status_change.ORDER_STATUS_CHANGE_DATETIME) AS STATUS_CHANGED_DATE FROM order_status_change WHERE order_status_change.ORDER_ITEM_ID = order_items.ORDER_ITEM_ID)
AS order_status_change ON order_status_change.ORDER_ITEM_ID = order_items.ORDER_ITEM_ID
WHERE ((SELECT A.A_User_ID from A WHERE A.A_User_ID = @UserID) AND (DATE(order_items.ORDER_REQUIRED_DATE_TIME) = DATE(@OrderDateTime)))
如何获得每个 order_items.ORDER_ITEM_ID 的“最新” order_status_change.STATUS ?
解决方案
你可以试试这个。
SELECT
order_items.ORDER_ITEM_ID,
order_price.ORDER_ITEM_TOTAL_PRICE,
order_status_change.ORDER_STATUS
FROM order_items
INNER JOIN order_price ON order_price.ORDERP_ITEM_ID = order_items.ORDER_ITEM_ID
INNER JOIN
(
SELECT MAX(order_status_change.ORDER_STATUS_CHANGE_DATETIME) AS STATUS_CHANGED_DATE,ORDER_ITEM_ID
FROM order_status_change
GROUP BY ORDER_ITEM_ID
) AS order_status_change ON order_status_change.ORDER_ITEM_ID = order_items.ORDER_ITEM_ID
WHERE (
(DATE(order_items.ORDER_REQUIRED_DATE_TIME) = DATE(@OrderDateTime))
)
推荐阅读
- reactjs - React Typescript - 添加自定义属性
- r - 如何将 RFE 选择的变量插入到 r 中的机器学习模型中?
- javascript - 无法停止使用 javascript 录制
- javascript - 使用 javascript 表达式返回基于文件扩展名的文件列表
- xpath - 谷歌表格中的 Importhtml 公式用于网络抓取
- javascript - 你如何使 this.forceUpdate() 应用于 React Native 中的整个应用程序?
- apache-flink - 什么是 blobstore 文件,为什么它们会不断填满 /tmp 目录?
- excel - 如何遍历包含字符串的列的行并通过电子邮件发送这些字符串?
- typescript - 我将如何在 TypeScript 中进行动态转换的 C++ 等价?
- regex - 用正则表达式匹配第二次出现