给出以下客户表:
customerNumber expireDate versionNumber
111 2021-02-08 10:00:00 2
111 2022-02-08 10:00:00 2
111 2022-02-08 10:00:00 3
111 2023-02-08 10:00:00 2
111 2023-02-08 10:00:00 3
111 2023-02-08 10:02:00 2
111 2023-02-08 10:03:00 3
我有以下查询,用于获取客户编号及其最大到期日期和相应的版本号:
SELECT customerNumber, MAX(expireDate), versionNumber
FROM customers
GROUP BY customerNumber;
我放置了 GROUP BY 指令,因为可能会有多个 customerNumber 编号。它返回:
customerNumber expireDate versionNumber
111 2023-02-08 10:03:00 2
尽管如此,这不是正确的输出。结果应该输出:
customerNumber expireDate versionNumber
111 2023-02-08 10:03:00 3
如何查询才能获得客户编号及其最长到期日期和其对应的版本号?
如果您使用 Row_Number,则可以为每个客户选择 1 行,并指定最长到期日期
mariadb 小提琴
MySQL 提琴
这是一个 mysql 版本。
一旦找到每个客户的最大过期日期,您就可以根据客户编号和过期日期加入客户表以查找其他详细信息,例如客户编号和版本编号。
小提琴
输出