使用 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中文网其他相关文章!