Maison >base de données >tutoriel mysql >Comment SQL peut-il générer une plage de nombres entre deux valeurs spécifiées ?
SQL : Générer des séquences de nombres entre deux valeurs
Besoin de créer une liste de nombres consécutifs dans une plage spécifiée en SQL ? Ceci est facilement réalisable en utilisant une combinaison du mot-clé VALUES
et des opérations JOIN
. Disons que vous devez générer une séquence de 1000 à 1050, chaque nombre sur une nouvelle ligne :
<code>1000 1001 1002 1003 ... 1050</code>
Voici comment procéder :
La solution :
Cette méthode exploite plusieurs JOIN
d'une table de petits nombres pour créer une séquence plus grande.
<code class="language-sql">WITH RECURSIVE x AS ( SELECT 0 AS n UNION ALL SELECT n + 1 FROM x WHERE n < 9999 -- Adjust upper limit as needed ) SELECT n FROM x WHERE n BETWEEN 1000 AND 1050 ORDER BY n;</code>
Explication :
CTE récursive (Common Table Expression) : Une instruction WITH RECURSIVE
crée une table temporaire x
contenant des nombres à partir de 0. Le UNION ALL
combine le 0 initial avec les nombres suivants, en incrémentant jusqu'à ce que la condition n < 9999
ne soit plus remplie. Ajustez 9999
pour contrôler le nombre maximum généré.
Filtrer la plage : La clause WHERE
filtre les résultats du CTE pour inclure uniquement les nombres compris entre 1 000 et 1 050 (inclus).
Ordre : ORDER BY n
garantit que les numéros sont affichés par ordre croissant.
Alternative (non récursive) : Pour des plages plus petites, une approche non récursive pourrait être plus simple :
<code class="language-sql">WITH x AS ( SELECT 1000 AS num UNION ALL SELECT 1001 UNION ALL SELECT 1002 UNION ALL -- ... add more numbers as needed ... SELECT 1050 ) SELECT num FROM x;</code>
Cependant, l'approche récursive est beaucoup plus évolutive pour des plages plus larges.
Conclusion :
Cette technique SQL offre un moyen flexible et efficace de générer des séquences numériques dans des limites définies. Le CTE récursif offre une évolutivité pour générer de très grandes séquences, ce qui en fait un outil puissant pour diverses tâches de génération de données. N'oubliez pas d'ajuster la limite supérieure du CTE récursif (n < 9999
) pour s'adapter à la plage souhaitée.
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!