gpt4 book ai didi

Mysql 变量未在每一行上写入/读取

转载 作者:行者123 更新时间:2023-11-28 23:10:43 25 4
gpt4 key购买 nike

我有一个表格如下:

time   datetime

我只想选择该表中提供两个信息的行:该行中存在的时间和前一行中存在的时间,以便我们可以显示一组时间窗口。例如,使用此记录:

2017-07-01 20:00:00
2017-07-01 07:00:00
2017-04-04 23:52:00

将返回以下时间窗口:

2017-07-01 20:00:00 - null
2017-07-01 07:00:00 - 2017-07-01 20:00:00
2017-07-01 20:00:00 - 2017-04-04 23:52:00

我虽然关于使用变量,首先选择变量并将其设置在每一行,能够定义一个时间窗口,如下例所示:

SELECT @END_DATE date_time_to, @END_DATE := date_time date_time_from FROM (
SELECT cast('2017-07-01 20:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-07-01 07:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-04-04 23:52:00' as DATETIME) AS date_time
) a ORDER BY date_time desc;

这在以某种方式设置变量时有效,但在第一次运行时它只是提供以下结果:

+--------------+---------------------+
| date_time_to | date_time_from |
+--------------+---------------------+
| NULL | 2017-07-01 20:00:00 |
| NULL | 2017-07-01 07:00:00 |
| NULL | 2017-04-04 23:52:00 |
+--------------+---------------------+

如果我简单地将 null 设置为变量 (SET @END_DATE := NULL) 并重试,我得到:

+---------------------+---------------------+
| date_time_to | date_time_from |
+---------------------+---------------------+
| NULL | 2017-07-01 20:00:00 |
| 2017-07-01 20:00:00 | 2017-07-01 07:00:00 |
| 2017-07-01 07:00:00 | 2017-04-04 23:52:00 |
+---------------------+---------------------+

这是我想要的结果,但是每当我在我的应用程序上使用它时,我都没有设置任何变量,而且我不断得到第一列为空的结果我在这里做错了什么?

最佳答案

在连接中初始化变量。

SELECT @END_DATE date_time_to, @END_DATE := date_time date_time_from FROM (
SELECT cast('2017-07-01 20:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-07-01 07:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-04-04 23:52:00' as DATETIME) AS date_time
) a
CROSS JOIN (SELECT @END_DATE := NULL) b
ORDER BY date_time desc;

关于Mysql 变量未在每一行上写入/读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061764/

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