0

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

例子:

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

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

4

2 回答 2

1

我认为要做到这一点,您必须在 SGBD 过程的循环内或外部(php 脚本,...)执行插入。

于 2012-04-25T09:44:28.897 回答
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;
于 2012-04-25T10:05:20.277 回答