SQL SELECT获取前N个正整数
发布时间:2020-12-12 16:43:12 所属栏目:MsSql教程 来源:网络整理
导读:我需要得到一个包含前N个正整数的结果集.是否可以使用标准SQL SELECT语句来获取它们(没有提供任何计数表)? 如果不可能,有什么具体的MySQL方式可以实现吗? 解决方法 似乎你想要的是一个虚拟行集. 在MySQL中,如果没有表,这是不可能的. 大多数主要系统提供了一
我需要得到一个包含前N个正整数的结果集.是否可以使用标准SQL SELECT语句来获取它们(没有提供任何计数表)?
如果不可能,有什么具体的MySQL方式可以实现吗? 解决方法似乎你想要的是一个虚拟行集.在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 $$ 你调用过程,表中的数字被填满. 您可以在会话期间重复使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |