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 ?
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!