Maison >base de données >tutoriel mysql >Comment puis-je générer une séquence de nombres entre deux valeurs données à l'aide de SQL ?

Comment puis-je générer une séquence de nombres entre deux valeurs données à l'aide de SQL ?

DDD
DDDoriginal
2025-01-20 03:06:10582parcourir

How Can I Generate a Sequence of Numbers Between Two Given Values Using SQL?

Génération de plages de numéros avec SQL

Besoin de créer une séquence de nombres entre deux valeurs spécifiées (par exemple, 1000 et 1050) dans une base de données SQL ? Cet article présente des méthodes efficaces utilisant les opérations VALUES et JOIN.

L'idée principale est de générer un ensemble de nombres en utilisant VALUES, puis d'utiliser JOIN pour les combiner dans une plage plus large. Cette approche évolue facilement pour générer des centaines de milliers de lignes en élargissant la requête.

Voici une solution compacte :

<code class="language-sql">WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM x ones, x tens, x hundreds, x thousands
ORDER BY 1</code>

Une méthode plus explicite est :

<code class="language-sql">SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n
FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n),
     (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n)
ORDER BY 1</code>

Les deux exemples peuvent être personnalisés pour générer des plages spécifiques en ajoutant une clause WHERE. Pour une utilisation fréquente, envisagez de créer une fonction table pour la réutilisabilité.

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