gpt4 book ai didi

MySQL - 使用 COALESCE 与 DATE_ADD 和 DATE_SUB 获取下一个/上一个记录

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:40 26 4
gpt4 key购买 nike

我正在尝试查询 MySQL 以选择上一条和下一条记录。我在一起使用 COALESCE 和 DATE_ADD/DATE_SUB 方面需要帮助。

SELECT * from `Historical` where `DeltaH` = 'ALTF' and `Date`= 
COALESCE(DATE_SUB('2019-01-21', INTERVAL 1 DAY),
DATE_SUB('2019-01-21',INTERVAL 2 DAY),
DATE_SUB('2019-01-21', INTERVAL 3 DAY));

我不能使用主键,因为表中的行被/将被删除。日期栏也不一定有固定的日期,我想找的是下一个更早/更晚的日期。

SELECT * from `Historical` where `DeltaH` = 'ALTF' and `Date`=  
DATE_SUB('2019-01-21', INTERVAL 3 DAY);

上面的查询似乎有效,但是我需要查询 INTERVAL 1 DAY,以防日期不存在移动到 INTERVAL 2 DAY....

 select * from `Historical` where `DeltaH` = 'ALTF' and `Date`= 
DATE_SUB('2019-01-21', INTERVAL COALESCE(1,2,3,4,5) DAY);

这个也不行。我知道 COALESCE() 函数返回第一个非空值,但是我无法使用上述查询让它工作。我已确认 2019-01-18 存在数据,但未被选中。你能给些建议么?

我可以使用替代解决方案。

最佳答案

您可以使用子查询在表中查找小于 2019-01-21 的最近日期,例如

SELECT * 
FROM `Historical`
WHERE `DeltaH` = 'ALTF' AND `Date`= (SELECT MAX(`Date`)
FROM `Historical`
WHERE `DeltaH` = 'ALTF' AND `Date` < '2019-01-21')

要找到最晚的日期,我们只需稍微调整一下查询,使用 MIN>:

SELECT * 
FROM `Historical`
WHERE `DeltaH` = 'ALTF' AND `Date`= (SELECT MIN(`Date`)
FROM `Historical`
WHERE `DeltaH` = 'ALTF' AND `Date` > '2019-01-21')

关于MySQL - 使用 COALESCE 与 DATE_ADD 和 DATE_SUB 获取下一个/上一个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54613673/

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