首页 >数据库 >mysql教程 >如何使用 SQL SELECT 语句生成前 N 个正整数?

如何使用 SQL SELECT 语句生成前 N 个正整数?

DDD
DDD原创
2024-12-24 14:35:15311浏览

How Can I Generate the First N Positive Integers with a SQL SELECT Statement?

使用 SQL SELECT 生成前 N 个正整数

问题:

获取第一个仅使用标准 SQL SELECT 语句来处理 N 个正整数提出了挑战。有没有不依赖计数表的解决方法?

答案:

虽然一般 SQL 缺乏此操作的本机方法,但几个主要数据库系统提供了此操作解决方案:

Oracle:

SELECT level
FROM dual
CONNECT BY level <= 10

SQL服务器:

WITH q AS
(
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM q
WHERE num < 10
)
SELECT *
FROM q

PostgreSQL:

SELECT num
FROM generate_series(1, 10) num

MySQL:

与上述系统不同, MySQL缺乏类似的机制。作为解决方法,您可以使用以下脚本创建临时表并用所需的数字填充它:

CREATE TABLE filler (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
) ENGINE=Memory;

CREATE PROCEDURE prc_filler(cnt INT)
BEGIN
DECLARE _cnt INT;
SET _cnt = 1;
WHILE _cnt <= cnt DO
INSERT
INTO filler
SELECT _cnt;
SET _cnt = _cnt + 1;
END WHILE;
END
$$

要使用该脚本,请使用所需的整数数量调用过程:

CALL prc_filler(10);

以上是如何使用 SQL SELECT 语句生成前 N 个正整数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn