【发布时间】:2022-01-17 17:39:57
【问题描述】:
id|code|transaction_date |amount|status|record_status|creation_date
1 |0001|2021-12-10 00:00:00| 10.00|Succ |D |2021-12-10 00:00:00
2 |0001|2021-12-10 00:00:00| 10.00|Fail |D |2021-12-11 00:00:00
3 |0001|2021-12-10 00:00:00| 10.00| |A |2021-12-12 00:00:00
我要选择recod_status = A,code = 001,交易日期为2021-12-10'
SELECT * FROM TestTable
WHERE DATE(alloc.trans_date) IN ('2021-12-10') // Need filter by few dates
AND record_status = 'A'
AND code = '001';
但我只希望在相同的代码 = 001 且交易日期为 2021-12-10' 但 record_status = 'D', status = 'Fail' 且 creation_date 是最新的情况下返回记录。
上面的示例将返回第 3 条记录,因为第 2 条记录的 creation_date 是最新的并且 status = 'Fail' 和 record_status = 'D'。
我只是想比较一下最新的creation_date。'
我可以选择record_status = 'D'的最新交易
SELECT * FROM TestTable
WHERE creation_date = (
SELECT MAX(creation_date)
FROM TestTable
WHERE DATE(trans_date) IN ('2021-12-10')
AND record_status = 'D'
)
AND record_status = 'D'
AND code = '001';
【问题讨论】:
-
因为第二条记录哪一个creation_date是最新的 ???最新的
creation_date值为'2021-12-12 00:00:00',属于id=3行,而不是2... -
最新的record_status = D
-
是的,当上一条记录(最新创建日期)状态=失败时,我想返回记录状态=A的最后一条记录
-
什么是精确 MySQL 版本?如果最后一行有 D,pre-last 有 A,pre-pre-last 有 D,那么你需要返回 pre-last 吗?如果最后一行和前最后一个有 A 和前前最后一个有 D 那么你需要返回最后一个还是前最后一个?
-
MYSQL 5,我只想将第 3 行(record_status=A)与第 2 行进行比较,因为第 2 行是最后创建日期和 record_status=D,并且两者具有相同的交易日期。但仅当第二行状态为“失败”时才返回。我的最后一条 sql 语句是选择 record_status 为 'D' 的最后一条记录