Maison >base de données >tutoriel mysql >Comment SQL peut-il générer une plage de nombres entre deux valeurs spécifiées ?

Comment SQL peut-il générer une plage de nombres entre deux valeurs spécifiées ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-20 03:26:09327parcourir

How Can SQL Generate a Range of Numbers Between Two Specified Values?

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 JOINd'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 :

  1. 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é.

  2. 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).

  3. 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!

Déclaration:
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