gpt4 book ai didi

mysql - 在 mysql 表中选择记录 ID 的第二个实例

转载 作者:行者123 更新时间:2023-11-29 01:56:42 25 4
gpt4 key购买 nike

我需要能够找到每个客户下第二次订单的时间,但我想不出该怎么做!

基本表结构:

Order ID    Customer ID    Order Date
1 123 2014-09-12
2 456 2014-10-22
3 456 2014-11-01 <-- THIS IS CUST 456's 2ND ORDER
4 789 2014-11-01
5 123 2014-11-09 <-- THIS IS CUST 123's 2ND ORDER
6 225 2014-11-11

如何使用 mysql 从表中取出第二个订单?

真表有超过20万的订单和超过7万的客户,从2010年以来每个人只下了一个订单到下了20多个订单。

最佳答案

如果您只想要第二个订单日期,则使用自联接来排除第一个订单,并使用 MIN 来获取剩余的最早订单:-

SELECT t1.CustomerId, MIN(t2.OrderDate)
FROM
( SELECT CustomerId, MIN(OrderDate) AS OrderDate
FROM some_table
GROUP BY CustomerId
) t1
INNER JOIN some_table t2
ON t1.CustomerId = t2.CustomerId
AND t1.OrderDate < t2.OrderDate
GROUP BY t1.CustomerId

如果您需要其他详细信息(例如订单 ID),那么您需要将其用作子查询并将其连接回主表。

编辑 - 可能会简化如下:-

SELECT t1.CustomerId, MIN(t2.OrderDate)
FROM some_table t1
INNER JOIN some_table t2
ON t1.CustomerId = t2.CustomerId
AND t1.OrderDate < t2.OrderDate
GROUP BY t1.CustomerId

这是根据客户 ID 将表与自身进行连接,而且在第二次连接表时订单日期更大。

这很可能会在计算时产生大量数据。

不过我觉得我错过了一些东西。

关于mysql - 在 mysql 表中选择记录 ID 的第二个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888532/

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