我想选择整行,该行已被 2 个最大日期列过滤 -
所以如果我有一张 table (供应):
D_id |O_id | O_date | Start_date| amount
400 |1 | 2018-2-7 | 2018-4-7 | 500
401 |1 | 2019-8-2 | 2019-10-1 | 1500
402 |1 | 2019-8-2 | 2019-12-7 | 200
403 |2 | 2016-4-10 | 2016-5-7 | 100
404 |2 | 2018-12-1 | 2018-12-17| 50
405 |2 | 2018-12-1 | 2019-1-1 | 2500
因此,输出应按 d_id 分组并显示具有最大 O_date 和最大 start_date 的整行
D_id |O_id | O_date | Start_date | amount |
402 |1 | 2019-8-2 | 2019-12-7 | 200
405 |2 | 2018-12-1 | 2019-1-1 | 2500
我一直面临的问题是通过使用 max 和 group by 条件,SQL 与每行的字段不匹配。
select max(O_DATE),
MAX(START_DATE),
D_ID,
AMOUNT,
O_ID
FROM SUPPLY
group by
O_ID;
最佳答案
以下查询应该适合您。根据您的逻辑,START_DATE 对于这两种情况都很常见,并且仅 START_DATE 之间的连接应该可以解决问题。
SELECT * FROM SUPPLY A
INNER JOIN
(
SELECT O_ID,
MAX(O_DATE) O_DATE,
MAX(START_DATE) START_DATE
FROM SUPPLY
group by O_ID
)B
ON A.O_ID = B.O_ID
AND A.START_DATE = B.START_DATE
关于mysql - 如何根据多个最大日期列选择整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56788426/