序號序列
常見場景: 為每行記錄添加序號
SELECT
(@rownum := @rownum + 1) AS ROWNUM,
t.*
FROM
A_TABLE t,
(SELECT @rownum := 0) r
LIMIT 0, 30;
日期序列
常見場景: 生成某段范圍內的時間(如某月每天, 某天每時等)
生成方法: 要求數(shù)據(jù)庫中存在任意一張行數(shù)大于需求范圍的表, 其方法類似 序號序列
# 生成最近30天的日期序列(倒序)
SELECT
(@rownum := @rownum + 1) AS ROWNUM,
DATE_ADD(n.today,INTERVAL -1 * @rownum DAY) DAYS
FROM
A_TABLE t,
(SELECT @rownum := 0) r,
(SELECT CURDATE() today) n
LIMIT 0, 30;
# 生成最近30天的日期序列(正序)
SELECT
(@rownum := @rownum - 1) AS ROWNUM,
DATE_ADD(n.today,INTERVAL -1 * @rownum DAY) DAYS
FROM
A_TABLE t,
(SELECT @rownum := 30) r,
(SELECT CURDATE() today) n
LIMIT 0, 30;