我正在嘗試使用 WHILE 回圈創建一個填充了 30 個日期的時間資料集。我這樣做是因為我沒有能力在 mySql 5.7 中使用 CTE。之后我將把這個資料集嵌入到一個子查詢中。所以,假設時間資料集應該是這樣的 -
| 日期 |
|---|
| 29/05/2022 |
| 28/05/2022 |
| 27/05/2022 |
| ... |
| 29/04/2022 |
我試圖糾正如下所寫的 WHILE 回圈,但未能這樣做。如果有人有想法,我們將不勝感激。
set @i = DATE_ADD(CURRENT_DATE(), DAY -2 INTERVAL)
set @timeset = select CURRENT_DATE()
while @i < CURRENT_DATE() DO
timeset = @timeset
union
select DATE_ADD(@timeset , DAY 1 INTERVAL)
set @i = DATE_ADD(@i, DAY 1 INTERVAL)
end WHILE
謝謝!
uj5u.com熱心網友回復:
如果您在回圈內執行 SELECT,則每一行將是其自己的結果集。可能不是你想要的。
如果您需要即時生成它,我會選擇將其作為一個沒有回圈的查詢來執行,例如:
select current_date() interval d10.n d1.n day
from (
select 0 as n union select 1 union select 2 union select 3
union select 4 union select 5 union select 6 union select 7
union select 8 union select 9
) as d1
cross join (
select 0 as n union select 10 union select 20
) as d10;
誠然,這很尷尬。這就是為什么上面的評論建議創建一個每天預填充一行的“日歷表”,然后您可以查詢該表以獲取一系列行。即使您在接下來的 100 年中每天填充一行,也只有大約 36525 行,對吧?仍然不是 MySQL 標準的大表。
或者你可以升級到 MySQL 8.0,無論如何你都應該在2023 年 10 月之前完成,因為那是 MySQL 5.7 壽命結束的時候。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/483720.html
上一篇:從回圈列印多個用戶輸入
