在数据库中插入一系列数字作为行

时间:2014-08-13 14:22:39

标签: mysql database postgresql

是否可以插入一系列同时编号的行,而不是单独插入每个?

因此,如果我有一个包含A列和B列的表格,并且我想要从1-50填充A列的50行,那么可以在同一个命令中完成所有操作而无需单独编写每个数字吗?

2 个答案:

答案 0 :(得分:1)

正如你用Postgres标记的那样:

insert into some_table (col_a, col_b)
select i, null
from generate_series(1,50) i;

手册中有关generate_series()的更多详情:
http://www.postgresql.org/docs/current/static/functions-srf.html

答案 1 :(得分:1)

你还用mysql标记了这个。

如果你有一个整数的实用程序表(0-9,我认为比一系列UNION更简单),那么你可以模仿Postgres的聪明行为,如下所示:

 DROP TABLE IF EXISTS ints;
 CREATE TABLE ints(i INT NOT NULL PRIMARY KEY);
 INSERT INTO ints VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

 DROP TABLE IF EXISTS my_table;

 CREATE TABLE my_table(a INT NOT NULL PRIMARY KEY,b CHAR(1) NOT NULL);
 INSERT INTO my_table (a,b) SELECT i2.i*10+i1.i+1 n,'x' FROM ints i1 JOIN ints i2 HAVING n <= 50;

 SELECT * FROM my_table;
 +----+---+
 | a  | b |
 +----+---+
 |  1 | x |
 |  2 | x |
 |  3 | x |
 |  4 | x |
 |  5 | x |
 |  6 | x |
 |  7 | x |
 |  8 | x |
 | .. |.. |
 | .. |.. |
 | .. |.. |
 | .. |.. |
 | 46 | x |
 | 47 | x |
 | 48 | x |
 | 49 | x |
 | 50 | x |
 +----+---+