Maison > base de données > tutoriel mysql > Comment puis-je générer une séquence d'entiers dans MySQL ?

Comment puis-je générer une séquence d'entiers dans MySQL ?

Patricia Arquette
Libérer: 2024-12-20 12:22:09
original
803 Les gens l'ont consulté

How Can I Generate a Sequence of Integers in MySQL?

Construire une séquence d'entiers dans MySQL

Créer une simple séquence d'entiers de n à m inclus peut être une exigence courante dans les opérations de base de données . Pour y parvenir dans MySQL, une méthode fréquemment recommandée consiste à utiliser une expression de table commune (CTE) récursive.

Une de ces approches consiste à fusionner une CTE récursive avec une table existante :

WITH RECURSIVE Numbers AS (
    SELECT
        n,
        n + 1 AS next_n
    FROM Numbers
    WHERE n < m
    UNION
    SELECT
        m,
        NULL
)
SELECT
    n
FROM Numbers
ORDER BY n;
Copier après la connexion

Dans Dans cet exemple, le CTE Numbers est défini pour générer une séquence d'entiers en ajoutant itérativement 1 à la valeur précédente jusqu'à ce qu'elle atteigne la valeur maximale spécifiée m. La requête utilise ensuite ce CTE pour sélectionner et ordonner la séquence générée.

Une approche alternative, comme suggérée dans la question de référence, consiste à utiliser une seule requête avec une variable définie par l'utilisateur :

SET @row := 0;
SELECT
    @row := @row + 1 AS row,
    t.*
FROM some_table t, (SELECT @row := 0) r;
Copier après la connexion

Cette méthode initialise la variable @row à 0 et l'incrémente de 1 pour chaque ligne de l'ensemble de résultats. Bien que cette approche puisse être plus simple dans certains scénarios, elle repose sur des variables définies par l'utilisateur qui ne sont pas prises en charge dans toutes les versions ou contextes de MySQL.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal