Génération des N premiers entiers positifs à l'aide de SQL SELECT
Problème :
Obtention du premier N entiers positifs utilisant uniquement une instruction SQL SELECT standard a posé un défi. Existe-t-il une solution de contournement sans recourir à une table de comptage ?
Réponse :
Bien que le SQL général ne dispose pas d'une méthode native pour cette opération, plusieurs systèmes de bases de données majeurs proposent des solutions :
Oracle :
SELECT level FROM dual CONNECT BY level <= 10
SQL Serveur :
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 :
Contrairement aux systèmes susmentionnés, MySQL ne dispose pas d'un mécanisme similaire. Pour contourner le problème, vous pouvez utiliser le script suivant pour créer une table temporaire et la remplir avec les nombres souhaités :
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 $$
Pour utiliser le script, appelez la procédure avec le nombre d'entiers souhaité :
CALL prc_filler(10);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!