MySQL生成连续数字
MySQL 使用过程当中,经常需要有连续数字的表用来处理一些复杂的报表逻辑,这个blog介绍几种生成连续数字的表方法
如下,我需要生成一张表 id连续的从 1-50
文章目录
- 一.自定义变量的方法
- 二.存储过程的方法
- 三.MySQL 8.0 With递归方法
一.自定义变量的方法
构造两个临时表 一个5一个10,通过笛卡尔积可以构造50行记录,即可构造50条记录
SELECT @xi:=@xi+1 as xc from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) xc1, (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 UNION SELECT 10) xc2, (SELECT @xi:=0) xc0
测试记录
mysql>
mysql> SELECT @xi:=@xi+1 as xc from-> (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) xc1,-> (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 U
SELECT 10) xc2,-> (SELECT @xi:=0) xc0 ;
+------+
| xc |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
+------+
50 rows in set, 2 warnings (0.00 sec)mysql>
二.存储过程的方法
写存储过程,这个就会方便很多
drop table t;
create table t(id int);DELIMITER //create procedure p_ins_seq(in pi_num int)
BEGINdeclare l_n1 int default 1;truncate table t;while l_n1 <= pi_num DO insert into t values (l_n1);set l_n1 = l_n1 + 1;end while;end;DELIMITER ;call p_ins_seq(50);
测试记录
mysql>
mysql> drop table t;
Query OK, 0 rows affected (0.01 sec)mysql> create table t(id int);
Query OK, 0 rows affected (0.02 sec)mysql>
mysql>
mysql> DELIMITER //
mysql> create procedure p_ins_seq(in pi_num int)-> BEGIN->-> declare l_n1 int default 1;->-> truncate table t;->-> while l_n1 <= pi_num DO-> insert into t values (l_n1);-> set l_n1 = l_n1 + 1;-> end while;->-> end;-> //
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> DELIMITER ;
mysql>
mysql>
mysql> call p_ins_seq(50);
Query OK, 1 row affected (0.14 sec)mysql>
mysql> select * from t;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
+------+
50 rows in set (0.00 sec)
三.MySQL 8.0 With递归方法
MySQL 8.0开始支持with语法后,这个就大大的简便了
with recursive c(n) AS
(
select 1
union ALL
select n + 1
from c
where n < 50
)
select * from c;
测试记录
mysql> with recursive c(n) AS-> (-> select 1-> union ALL-> select n + 1-> from c-> where n < 50-> )-> select * from c;
+------+
| n |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
| 44 |
| 45 |
| 46 |
| 47 |
| 48 |
| 49 |
| 50 |
+------+
50 rows in set (0.00 sec)
MySQL生成连续数字相关推荐
- MySQL中如何随机产生验证码,MySQL 生成随机数字 UUID MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法...
想了解MySQL 生成随机数字.字符串.日期.验证码及 UUID的方法的相关内容吗,不剪发的Tony老师在本文为您仔细讲解MySQL 生成随机数字 UUID的相关知识和一些Code实例,欢迎阅读和指正 ...
- 【mySql】利用笛卡尔积生成连续数字
原理: 有2行数据的表a和有3行数据的表b进行笛卡尔积(第三个c表只有一个数据xi=0,不会增加结果表的行数), 会生成2x3=6行数据的结果表,在select时将变量自加1,可得到连续数字. 仅需要 ...
- MySQL 生成随机数字、字符串、日期、验证码以及 UUID
文章目录 生成随机数字 生成 0 到 1 之间的随机数 生成指定范围内的随机数 生成 6 位数字手机验证码 生成遵循正态分布的随机数 生成随机字符串 生成固定长度的随机字符串 生成可变长度的随机字符串 ...
- Mysql生成连续时间段记录
需求说明 基于某个起始日期值,比如'2021-9-1',生成其之后的30天数据,结果类似: 2021-09-02.2021-09-03.2021-09-04... 问题分析 该需要看似简单,但想不借助 ...
- mysql 生成随机数 —— 数字、字符串、手机号、日期、姓名、一段中文汉字
文章目录 1.随机数字 2.随机生成 几位的字符串 3.随机生成 手机号 4.随机生成日期 4.1.日期(yyyy-MM-dd HH:mm:ss) 4.2.日期(yyyy-MM-dd ) 5.生成姓名 ...
- gvim中利用录制宏产生连续数字
方法步骤: a-->0-->Esc-->qa -->yy-->p--Ctrl + a -->yy --> p -->Ctrl + a -->q - ...
- mysql生成随机验证码_MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法...
上一篇介绍了如何在 Oracle 生成随机数字.字符串.日期.验证码以及 UUID,今天我们继续讨论在 MySQL 中生成各种随机数据的方法.
- Mysql 生成不重复的随机数字
在网上查找Mysql 生成不重复的随机数字 ,竟然没找到合适的例子. 其实思路很简单,利用MySQL现有的函数,然后进行加工处理,达到预期的结果.可以用到的MySQL函数为rand() ,以及 rou ...
- mysql中随机16位数字_MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法
上一篇介绍了如何在 Oracle 生成随机数字.字符串.日期.验证码以及 UUID,今天我们继续讨论在 MySQL 中生成各种随机数据的方法.
- mysql 生成随机(数字、英文字符、汉字函数)
生成随机英文字符 delimiter $$ drop function if exists rand_string; create function rand_string(n int) return ...
最新文章
- TCP/IP详解--第十二章
- Java根据当前日期获得这一周的日期
- iphone刷基带_iphone7基带坏了怎么办,iphone7基带修复多少钱
- java erlang 游戏_游戏中最近可达点(用erlang写一个简单算法)
- 今天看到一个热搜,说一个美团会员配送费6元,普通用户2元,导致轩然大波
- win10 sshsecureshellclient删除profile保存的信息
- ABP应用层——参数有效性验证
- python日期时间_Python日期时间
- 在C#中如何读取枚举值的描述属性
- 机器学习系列全集,301页PDF精心整理!
- 计算机 国际顶尖级会议排名,计算机学科国际会议排名
- 图像处理Task05图像分割/二值化
- 当百度与重庆相遇,李彦宏的AI越过山丘?
- 用ffmpeg修改MP4文件头信息,使其支持流式加载及播放
- 性能分析系列-小命令保证大性能
- ##Windows 10纯净版下载##
- 今日总结:错误码配置,关于TXT文件下载问题
- 计算机下面添加桌面,电脑系统教程_win7中如何在库中添加桌面
- java实现沙箱测试环境支付宝支付(demo)和整合微信支付和支付宝支付到ssm环境全过程(附源码)...
- Python打包与解压zip