gpt4 book ai didi

mysql - 如何从此 SELECT 中排除重复项?

转载 作者:行者123 更新时间:2023-11-29 18:45:20 26 4
gpt4 key购买 nike

这是发票历史表中的数据。

invoicehistoryID WorkOrderNumber InvoiceDate

1 1 2017-06-13 12:00:49
2 1 2017-06-13 12:05:05
3 10 2017-06-14 12:32:59
4 10 2017-06-14 14:26:25
5 1 2017-06-14 14:26:54
6 1 2017-06-22 10:12:49

我需要什么 SELECT 查询才能仅获取按 WorkOrderNumber 排序的每个 WorkOrderNumber 的最新 InvoiceDate?换句话说,我怎样才能得到这个:

invoicehistoryID WorkOrderNumber InvoiceDate
6 1 2017-06-22 10:12:49
4 10 2017-06-14 14:26:25

我在 DISTINCT 方面还没有取得成功。我尚未成功使用 LIMIT,因为我的发票历史记录表将会增长。

这几乎有效,

SELECT max(InvoiceDate),WorkOrderNumber FROM `invoicehistory` GROUP BY WorkOrderNumber

但没有获取invoicehistoryID。
这个

SELECT max(InvoiceDate),WorkOrderNumber, invoicehistoryID FROM `invoicehistory` GROUP BY WorkOrderNumber, invoicehistoryID

返回所有行。

最佳答案

  • D 组:是每个工作订单的最大发票日期。
  • 设置 IH 是整个发票历史记录。

通过在日期和订单编号上将 D 加入 IH,我们可以获得丢失的发票历史 ID 和其他需要的信息。

SELECT IH.invoiceHistoryID, IH.WorkOrderNumber, IH.InvoiceDate
FROM InvoiceHistory IH
INNER JOIN (SELECT max(invoiceDate) mInvoiceDate, WorkOrderNumber
FROM invoicehistory
GROUP BY workorderNumber) D
on D.mInvoiceDate = IH.InvoiceDate
and D.WorkOrderNumber = IH.workOrderNumber

如果 mySQL 支持的话,交叉应用将是实现此目的的另一种方法

或者使用窗口函数来分配行号并将结果限制为最新日期(如果 mySQL 支持)。

关于mysql - 如何从此 SELECT 中排除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703694/

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