Generieren der ersten N positiven ganzen Zahlen mit SQL SELECT
Problem:
Erhalten der ersten Die Verwendung von N positiven Ganzzahlen ausschließlich mit einer Standard-SQL-SELECT-Anweisung stellte eine Herausforderung dar. Gibt es eine Problemumgehung, ohne sich auf eine Zähltabelle zu verlassen?
Antwort:
Während dem allgemeinen SQL eine native Methode für diesen Vorgang fehlt, bieten mehrere große Datenbanksysteme Lösungen an:
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:
Im Gegensatz zu den oben genannten Systemen, MySQL fehlt ein ähnlicher Mechanismus. Um dieses Problem zu umgehen, können Sie das folgende Skript verwenden, um eine temporäre Tabelle zu erstellen und diese mit den gewünschten Zahlen zu füllen:
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 $$
Um das Skript zu verwenden, rufen Sie die Prozedur mit der gewünschten Anzahl an Ganzzahlen auf:
CALL prc_filler(10);
Das obige ist der detaillierte Inhalt vonWie kann ich die ersten N positiven Ganzzahlen mit einer SQL-SELECT-Anweisung generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!