Maison >base de données >tutoriel mysql >Comment puis-je répliquer des lignes SQL en fonction d'un nombre et attribuer des numéros séquentiels ?

Comment puis-je répliquer des lignes SQL en fonction d'un nombre et attribuer des numéros séquentiels ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 13:53:40870parcourir

How Can I Replicate SQL Rows Based on a Count and Assign Sequential Numbers?

Réplication de lignes avec une numérotation basée sur le nombre en SQL

En SQL, la gestion de données avec des occurrences variables peut être difficile. Cette question explore une méthode pour répéter des lignes en fonction d'un nombre spécifié, en attribuant des indices numériques aux lignes résultantes.

Solution indépendante de la base de données

Utilisation d'une opération de jointure avec un table de nombres, nous pouvons répliquer des lignes en fonction de leurs valeurs de nombre sur diverses plates-formes de bases de données telles qu'Oracle, SQL Server, MySQL et PostgreSQL.

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

Explication

La table des nombres est une table statique contenant des nombres consécutifs (par exemple, 1, 2, 3, ...). En joignant la table principale avec la table des nombres à la condition "COUNT >= nombre", nous répliquons les lignes pour les valeurs avec des nombres supérieurs ou égaux aux nombres disponibles dans la table des nombres.

Exemple

Considérez les données de table suivantes :

value count
foo 1
bar 3
baz 2

L'application de la requête entraînerait ce qui suit sortie :

value count number
foo 1 1
bar 3 1
bar 3 2
bar 3 3
baz 2 1
baz 2 2

Dans ce résultat, la ligne pour "bar" avec un compte de 3 est répétée trois fois avec les indices correspondants 1, 2 et 3, tandis que la ligne pour "foo" n'apparaît qu'une seule fois car son compte est 1.

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