Loading

MySQL生成连续的数

背景

  • MySQL版本5.7,需要生成连续的日期,只通过select,而不走自定义函数或存储过程

思路

  • 只需要生成连续的数字,然后通过日期时间函数操作即可

脚本

  SELECT
  	DATE_ADD( "2022-11-02", INTERVAL CAST( @rank := @rank + 1 AS SIGNED ) DAY ) AS `rank` 
  FROM
  	detail p,
  	( SELECT @rank := 0 ) n 
    LIMIT 100;
  • SELECT @rank := 0通过:=赋值变量为0
  • detail是一个业务大表,目的是生成笛卡尔积,并逐条取出,产生迭代效果

小结

  • 核心就是必须通过辅助表产生笛卡尔积,形成迭代自增
  • 缺点是辅助表数据不是无限的,无法通过传入一个数控制迭代次数

参考

posted @ 2022-11-03 10:45  FynnWang  阅读(471)  评论(0编辑  收藏  举报