在Python中,如果我想要一个从0到9(含)的序列,我会使用xrange(0,10)。有没有办法在MySQL中做到这一点?MySQL中的数字序列
回答
您可以使用LAST_INSERT_ID()来模拟MySQL中的序列。
如果expr给出作为参数 LAST_INSERT_ID()时, 参数的值由函数 返回,记住作为下一个值到 由LAST_INSERT_ID返回()。这 可用于模拟序列:
创建一个表来保存序列 计数器和初始化:
CREATE TABLE sequence (id INT NOT NULL);
INSERT INTO sequence VALUES (0);
使用该表产生这样的序列号:
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
SELECT LAST_INSERT_ID();
UPDATE语句递增 序列计数器并导致LAST_INSERT_ID()的
下次调用 返回更新后的值。 SELECT 语句检索该值。 mysql_insert_id()C API函数 也可以用 来获取值。请参阅 第21.9.3.37节, “mysql_insert_id()”。
大家好,NebuSoft,谢谢你的回答。 我记得我Postgresql的日子里会有这样做的。我会沿线的东西: 从xrange(0,10)中选择x; 你没有意识到在MySQL中有这样的事情吗? – illuminatedtiger 2010-03-22 20:39:17
我在MySQL中没有遇到过类似的东西。话虽如此,我提供的例子直接来自MySQL官方网站/文档。所以如果有更好的方法,我会怀疑当他们举例说明如何在我提供的方法中创建序列时他们会提到它。 – NebuSoft 2010-03-23 14:06:17
尝试的integers table变种。这一次是从Xaprb采取:
create table integers(i int unsigned not null);
insert into integers(i) values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
select (hundreds.i * 100) + (tens.i * 10) + units.i as iii
from integers as units
cross join integers as tens
cross join integers as hundreds;
如果进行命名,比如,xrange999
,去年select
一个观点,那么你可以简单地说:
SELECT iii FROM xrange999 WHERE iii BETWEEN 0 AND 9
(当然,你可以做到这一点只用但我发现一千个整数更有用一些。)
如果Python是您的编程语言,您可以映射相同的Python范围来创建一个形式为INSERT语句:
INSERT INTO Table (IDCol) VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9)
不完全符合您的要求,而是一行Python代码,可处理任何范围,最多可达MySQL语句的最大长度。
由于是x范围没有这样的东西,可以使用存储整数一个单独的表(如前面回答),或者只是做一个存储过程来完成这项工作:
DROP PROCEDURE IF EXISTS xrange;
DELIMITER //
CREATE PROCEDURE xrange(x INT, y INT)
BEGIN
DECLARE i INT DEFAULT x;
CREATE TEMPORARY TABLE xrange_tmp (c1 INT);
WHILE i < y DO
INSERT INTO xrange_tmp VALUES (i);
SET i = i + 1;
END WHILE;
END;
//
用法:
CALL xrange(-2,10);
SELECT c1 FROM xrange_tmp;
DROP TABLE xrange_tmp;
上面显然会比用整数创建一个就绪表慢。虽然它更灵活。
- 1. 列出3列按字母顺序排列的mysql数据
- 2. AXAPTA中的数字序列
- 3. mysql:指数字列
- 4. 按字母数字顺序对MySQL列进行排序
- 5. MySQL中的6位数字列
- 6. 列数据中的未知字符MYSQL
- 7. 序列中MySQL计数的更改
- 8. MySQL在字母数字列的条件
- 9. 安排mysql在数字序列中加入结果
- 10. 从mysql varchar列中选择和排序数字
- 11. MySQL的顺序用字母和数字
- 12. 基于MySQL中的一个数字列检索排序的数据
- 13. 在MySQL中生成一系列数字
- 14. 在mysql列中添加数字
- 15. 在列中搜索数字MySQL
- 16. 使用PHP和MySQL更新数字序列(显示顺序)
- 17. mysql与数字排序varchar
- 18. 按正确的顺序排列mysql数字
- 19. PHP/Mysql:搜索字符串的序列化数据
- 20. 排序队列中的数字
- 21. kotlin中的数字不可序列化
- 22. MySQL的id序列
- 23. 生成的数字序列
- 24. mysql按序列化数据排序?
- 25. 基于MySQL中状态列的最小数字更新列?
- 26. 用MySQL中的序列int数填充列
- 27. MySQL自动增加加上一列中的字母数字
- 28. 序列化/反序列化的字节数组中JSON.NET
- 29. 在MYSQL中按字母顺序排列多行和排序
- 30. MySQL的加入一到数字列
的可能重复[我如何在mysql中连续发生器(http://stackoverflow.com/questions/701444/how-do-i-make-a-row-generator-in-mysql) – 2010-07-03 08:25:02