【发布时间】:2011-11-22 18:16:27
【问题描述】:
我想使用选择中的单行生成以下输出。
SELECT max(t1.id)+1 as new_id FROM t1;
-> 101
However I want to do
SELECT s.last_id, sequence(1..100000000) as new_id
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s;
-> 101,1
-> 101,2
-> 101,3
......
-> 101,100000000
在 postgreSQL 中我可以使用:
SELECT s.last_id, generate_series(1,100000000)
FROM (SELECT max(table1.id)+1 as last_id FROM table1) s; -- returns 100,000,000 rows
如何在 MySQL 中做到这一点而不使用临时表?
【问题讨论】:
-
派生表呢?我们也可以假设存在一个至少有 100 行的任意表吗?
-
@MartinSmith,聪明,我更喜欢没有这种假设的解决方案,所以所有表都只有 1 行。
-
@Johan:如果你所有的表都有 1 行,你就不需要数据库,是吗?
-
@ypercube,我用
trick标记它,因为我需要使用这个技巧来快速填充随机数据的数据库。你要我写一亿行吗? -
我只是在逗你。但是,是的,提到你希望它用于非常大的序列,会很好。
标签: mysql