Gelegentlich besteht die Anforderung, die ersten N positiven Ganzzahlen ausschließlich mit einer Standard-SQL-SELECT-Anweisung zu extrahieren. Es ist jedoch von entscheidender Bedeutung, die Durchführbarkeit einer solchen Anfrage ohne eine vorab ausgefüllte Zähltabelle zu ermitteln.
Standard-SQL-Ansatz
Im Bereich von Standard-SQL ist das direkte Abrufen von a Sequentielle Reihen positiver Ganzzahlen ohne Zähltabelle sind nicht erreichbar.
MySQL-spezifisch Lösungen
MySQL verfügt nicht über eine native Funktion zum Generieren fortlaufender Zahlen, ermöglicht jedoch die Erstellung von Dummy-Rowsets, um diese Einschränkung zu umgehen. Betrachten Sie die folgenden Beispiele aus verschiedenen Datenbankverwaltungssystemen:
SELECT level FROM dual CONNECT BY level <= 10
WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
SELECT num FROM generate_series(1, 10) num
MySQL-Einschränkungen
Eine vergleichbare Funktion stellt MySQL leider nicht zur Verfügung, was als Manko gewertet werden kann. Eine Problemumgehung kann darin bestehen, eine benutzerdefinierte Prozedur zu verwenden, um eine temporäre Tabelle mit der gewünschten Anzahl von Zeilen zu füllen und so den späteren Abruf zu erleichtern. Zum Beispiel:
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 $$ CALL prc_filler(10); SELECT * FROM filler;
Das obige ist der detaillierte Inhalt vonWie kann ich die ersten N positiven Ganzzahlen nur mit einer SQL-SELECT-Anweisung abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!