mysql - 如何根据多个最大日期列选择整行

标签 mysql sql

我想选择整行,该行已被 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/

相关文章:

php - 在 MYSQL 和 PHP 中将两行结果合二为一

mysql,转储,数据库恢复

mysql - MYSQL中如何基于一列合并值

mysql - 如何从 MySQL 数据库中获取最后的插入值并更新 Access 中的字段?

sql - 如何对引用 SQL 中其他几个实体之一的一个实体进行建模?

mysql group_concat 将一张表连接到另一张表

php - 使用 date_add() 将日期列与同一表中的另一列添加

sql - 使用 postgres 更新同一个表中具有不同值的列

php - 使用复选框检查要删除的列

sql - 有人使用右外连接吗?