gpt4 book ai didi

mysql - MySQL中这个 "cursor"类型的查询如何解决?

转载 作者:行者123 更新时间:2023-11-29 05:33:32 25 4
gpt4 key购买 nike

我的表中有以下数据。顺便说一句……这是 DD/MM/YYYY 格式:

Date
18/09/2012
17/09/2012
13/09/2012
11/09/2012
10/09/2012
09/09/2012
25/08/2012
24/08/2012

我想要的结果是:

Date
18/09/2012
13/09/2012
11/09/2012
09/09/2012
25/08/2012

规则:它从最近的日期 (18/09/2012) 开始,检查下一个日期 (17/09/2012)。如果有日期,则将其从列表中删除,因为它需要相隔 1 天。然后转到 13/09/2012,然后检查 12/09/2012 并没有找到,然后转到下一个,依此类推。基本上你不能让约会彼此接近(至少相隔 1 天)。

如果它在 TSQL 上,现在我可以在游标上执行此操作,但是由于我在 MySQL 上工作,MySQL 中有这样的东西吗?或者也许可以解决此查询的任何子查询方法?

感谢您的反馈。

最佳答案

试试这个解决方案-

SELECT date FROM (
SELECT
date, @d := IF(@d IS NULL OR DATEDIFF(@d, date) > 1, date, @d) start_date
FROM
dates,
(SELECT @d:=null) t
ORDER BY
date DESC
) t
WHERE start_date = date

子查询找出开始日期(18、13、11...),然后WHERE条件过滤记录。尝试运行子查询以了解其工作原理 -

  SELECT
date, @d := IF(@d IS NULL OR DATEDIFF(@d, date) > 1, date, @d) start_date
FROM
dates,
(SELECT @d:=null) t
ORDER BY
date DESC

关于mysql - MySQL中这个 "cursor"类型的查询如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671024/

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