似乎您想要的是一个
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$$
您调用该过程,表格将被数字填充。
您可以在会话期间重用它。



