Có vẻ như những gì bạn muốn là một dummy rowset
.
Trong MySQL
, không thể không có bảng.
Hầu hết các hệ thống chính cung cấp một cách để làm điều đó:
-
Trong
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
Trong
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
Trong
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
thiếu một cái gì đó như thế này và đây là một nhược điểm nghiêm trọng.
Tôi đã viết một tập lệnh đơn giản để tạo dữ liệu thử nghiệm cho các bảng mẫu trong các bài đăng trên blog của mình, có thể nó sẽ được sử dụng:
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
$$
Bạn gọi thủ tục và bảng có đầy các số.
Bạn có thể sử dụng lại nó trong suốt thời gian của phiên.