Maison >base de données >tutoriel mysql >Comment ajouter des lignes et les numéroter séquentiellement dans SQL en fonction d'un nombre ?

Comment ajouter des lignes et les numéroter séquentiellement dans SQL en fonction d'un nombre ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-06 14:15:41586parcourir

How to Append Rows and Sequentially Number Them in SQL Based on a Count?

Ajout de lignes et numérotation des résultats en SQL

Comment puis-je étendre un ensemble de résultats pour inclure plusieurs lignes pour chaque ligne avec un nombre supérieur à 1, tout en les numérotant séquentiellement ? Par exemple, considérons le tableau suivant avec les valeurs et les décomptes :

Value Count
foo 1
bar 3
baz 2

Le résultat souhaité serait :

Value Count Index
foo 1 1
bar 3 1
bar 3 2
bar 3 3
baz 2 1
baz 2 2

Pour obtenir cette compatibilité entre bases de données, envisagez d'utiliser un "Nombres". table :

SELECT value, count, number
FROM table
JOIN Numbers
ON table.count >= Numbers.number

Cette solution génère une séquence de nombres jusqu'au nombre maximum dans le tableau. En joignant la table d'origine avec la table Numbers, nous répétons efficacement les lignes et attribuons des indices séquentiels. Voici un exemple utilisant Microsoft SQL Server :

WITH Numbers AS (
    SELECT ROW_NUMBER() OVER (ORDER BY number) AS number
    FROM (
        SELECT 1 AS number
        UNION ALL
        SELECT number + 1
        FROM Numbers
        WHERE number < (MAX(count) OVER ())
    ) AS Outer
)
SELECT value, count, number
FROM table
JOIN Numbers
ON table.count >= Numbers.number

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