MySql序列生成

序号序列

常见场景: 为每行记录添加序号

SELECT
    (@rownum := @rownum + 1) AS ROWNUM,
    t.*
FROM
    A_TABLE t,
    (SELECT @rownum := 0) r
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 := 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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容