Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wiederholen Sie Zeilen im Ergebnis basierend auf einem ganzzahligen Wert in der Spalte

Ich denke, es ist besser, nicht mit Abfrage (SQL) aufzulösen. Es gibt einige Generierungsfunktionen, aber ihre Leistung ist schlecht.

Sie müssen Ihr Modell ändern (immer 1 Menge speichern) oder im Backend bearbeiten (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)

Die verbundene Unterabfrage wiederholt Zahlen von 0 bis 99999, es ist das Burn-It-Maximum für die Menge. Die Join-Wiederholung durch den Zähler 0... Menge-1 Werte.