gpt4 book ai didi

mysql - 获取所有订单,其中最后一个订单在 mySql 中超过一年

转载 作者:行者123 更新时间:2023-11-29 17:41:45 25 4
gpt4 key购买 nike

我有一个 mySQL 表,其中包含:客户 ID 和订单日期

一个 CustomerId 可以有多个行现在,我尝试获取 CustomerId,其中只有最后一个 OrderDate 早于一年。我尝试以下操作:

SELECT * 
FROM order
WHERE OrderDate <=DATE_SUB(now(), Interval 1 Year)
GROUP BY CustomerId
ORDER BY OrderDate DESCC;

这里的问题是,我得到了所有超过 1 年的行。但正如我上面所说,我尝试只获取超过 1 年的最新订单。谢谢您的任何建议

最佳答案

对行进行排序并限制到最后。另外,您使用了 DESCC 而不是 DESC。

SELECT * 
FROM order
WHERE OrderDate <=DATE_SUB(now(), Interval 1 Year)
GROUP BY CustomerId
ORDER BY OrderDate DESC
LIMIT 1;

您也可以尝试以下查询:

SELECT 
`CustomerId`,
`CustomerName`, // Add other fields you want returned.
MAX(`OrderDate`)
FROM `order`
WHERE `OrderDate` <= DATE_SUB(now(), Interval 1 Year)
GROUP BY `CustomerId`
ORDER BY MAX(`OrderDate`) DESC;

此外,这还将返回每个客户最后一个订单中的所有相关列:

SELECT *
FROM `order` a
JOIN (
SELECT
`CustomerId`,
MAX(`OrderDate`) as `maxdate`
FROM `order`
WHERE `OrderDate` <= DATE_SUB(now(), Interval 1 Year)
GROUP BY `CustomerId`) b
ON a.`CustomerId` = b.`CustomerId` AND
a.`OrderDate` = b.`maxdate`
ORDER BY `maxdate` DESC;

关于mysql - 获取所有订单,其中最后一个订单在 mySql 中超过一年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49968999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com