解决方法
似乎你想要的是一个虚拟行集.
在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
我写了一个简单的脚本来为我的博客文章中的示例表生成测试数据,也许这将是有用的:
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 $$
你调用过程,表中的数字被填满.
您可以在会话期间重复使用它.
原文地址:https://www.jb51.cc/mssql/81548.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。