Mysql
 sql >> Base de données >  >> RDS >> Mysql

Répétez les lignes dans le résultat en fonction d'une valeur entière dans la colonne

Je pense qu'il est préférable de ne pas résoudre avec une requête (SQL). Il existe une fonctionnalité de génération, mais ses performances sont médiocres.

Vous devez modifier votre modèle (stocker toujours 1 quantité) ou le traiter en backend (java/c/stb.)

Select id, 
       1 as quantity, 
       price_charged 
from table_name t
JOIN 
(SELECT e*10000+d*1000+c*100+b*10+a n FROM
(select 0 a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t1,
(select 0 b union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2,
(select 0 c union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3,
(select 0 d union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4,
(select 0 e union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5) counter
ON (counter.n<=t.quantity)

La sous-requête jointe a répété des nombres de 0 à 99999, c'est le maximum à brûler pour la quantité. La jointure se répète par le compteur 0...quantité-1 valeurs.