在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. 字符串數據的Mysql列排序
- 2. 如何對MYSQL中的字母數字列進行排序?
- 3. 按MySQL字段中的字數排序
- 4. 列出3列按字母順序排列的mysql數據
- 5. 中的數字序列
- 6. AXAPTA中的數字序列
- 7. 搜索mysql的序列化數據中的特定字符
- 8. 在MySQL中的數字列的反轉
- 9. 按字母數字順序對MySQL列進行排序
- 10. 序列化mysql表中的數據
- 11. 序列中MySQL計數的更改
- 12. Php序列化Mysql中的數據
- 13. Mysql,在一個序列中查找缺少的數字
- 14. mysql檢查數字序列中的空位
- 15. 列數據中的未知字符MYSQL
- 16. MySQL中的6位數字列
- 17. 在mysql中以字母數字排序
- 18. 字母數字mysql排序
- 19. MySQL排序varchar列數字,數字第一
- 20. 用字母數字順序排列的MySQL查詢
- 21. 與MySQL的數字和字符排序列
- 22. MySQL在字母數字列的條件
- 23. MySQL/CakePHP中的子序列
- 24. 安排mysql在數字序列中加入結果
- 25. 從mysql varchar列中選擇和排序數字
- 26. MySQL的順序用字母和數字
- 27. Mysql的順序數字/字符組合
- 28. MySQL的順序由字母 - 數字
- 29. 基於MySQL中的一個數字列檢索排序的數據
- 30. MySQL InnoDB數據序列化
的可能重複[我如何在mysql中連續發生器(http://stackoverflow.com/questions/701444/how-do-i-make-a-row-generator-in-mysql) – 2010-07-03 08:25:02