Maison > base de données > tutoriel mysql > Comment puis-je générer les N premiers entiers positifs avec une instruction SQL SELECT ?

Comment puis-je générer les N premiers entiers positifs avec une instruction SQL SELECT ?

DDD
Libérer: 2024-12-24 14:35:15
original
302 Les gens l'ont consulté

How Can I Generate the First N Positive Integers with a SQL SELECT Statement?

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
Copier après la connexion

SQL Serveur :

WITH q AS
(
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM q
WHERE num < 10
)
SELECT *
FROM q
Copier après la connexion

PostgreSQL :

SELECT num
FROM generate_series(1, 10) num
Copier après la connexion

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
$$
Copier après la connexion

Pour utiliser le script, appelez la procédure avec le nombre d'entiers souhaité :

CALL prc_filler(10);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal