Sieht so aus, als ob du ein Dummy-Rowset
möchtest.
In MySQL
ist dies ohne Tabelle unmöglich.
Die meisten großen Systeme bieten eine Möglichkeit dazu:
-
In Oracle
:
SELECT level
FROM dual
CONNECT BY
level <= 10
-
In SQL Server
:
WITH q AS
(
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM q
WHERE num < 10
)
SELECT *
FROM q
-
In PostgreSQL
:
SELECT num
FROM generate_series(1, 10) num
MySQL
fehlt so etwas und das ist ein ernster Nachteil.
Ich habe ein einfaches Skript geschrieben, um Testdaten für die Beispieltabellen in meinen Blog-Posts zu generieren, vielleicht ist es nützlich:
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
$$
Du rufst die Prozedur auf und die Tabelle wird mit den Zahlen gefüllt.
Du kannst sie während der gesamten Sitzung wiederverwenden.
0 Stimmen
Erstens, in welcher Definition?