SQL SELECT获取前N个正整数
我需要获取一个包含前N个正整数的结果集。是否可以仅使用标准SQL SELECT语句来获取它们(不提供任何计数表)?
如果不可能,是否有任何特定的MySQL方法来实现?
回答:
似乎您想要的是一个dummy rowset
。
在中MySQL
,没有表是不可能的。
大多数主要系统都提供了一种实现方法:
在
Oracle
:SELECT level
FROM dual
CONNECT BY
level <= 10
在
SQL Server
: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
缺少这样的东西,这是一个严重的缺点。
我写了一个简单的脚本来为博客文章中的示例表生成测试数据,也许会有用:
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
$$
您调用该过程,表格将被数字填充。
您可以在会话期间重用它。
以上是 SQL SELECT获取前N个正整数 的全部内容, 来源链接: utcz.com/qa/421505.html