如何创建具有连续数字的表

时间:2012-04-25 09:38:46

标签: mysql

我需要一个只有一个int(11)列的帮助器表,它包含从1到给定最大值的每个连续数字的行。这可以用纯SQL来完成吗?

示例:

INSERT INTO `helper`('itnum') VALUES (1),(2),(3),...(999999),(1000000);

我需要这样的声明,但没有明确列出要制作的所有条目。

2 个答案:

答案 0 :(得分:1)

我认为要这样做,你必须在SGBD程序的循环中执行插入,或者在外部执行插入(php脚本,...)。

答案 1 :(得分:1)

这样的事情怎么样:

DELIMITER |
DROP PROCEDURE IF EXISTS insert_helper_records |
CREATE PROCEDURE insert_helper_records(a_max INTEGER)
BEGIN
    DECLARE v_iteration INTEGER;
    SET v_iteration := 1;
    insert_loop: LOOP
        INSERT INTO helper(itnum) VALUES (v_iteration);
        SET v_iteration := v_iteration + 1;
        IF v_iteration = a_max THEN
            LEAVE insert_loop;
        END IF;
    END LOOP;
END |
DELIMITER ;

然后按照你想要的方式调用它:

SELECT insert_helper_records(999999) FROM DUAL;