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
Libérer: 2025-01-06 14:15:41
original
571 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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