sql >> Database teknologi >  >> RDS >> Mysql

Gentag rækker i resultatet baseret på en heltalsværdi i kolonnen

Jeg tror, ​​det er bedre at løse det ikke med query(SQL). Der er en eller anden generationsfunktion, men dens ydeevne er dårlig.

Du skal ændre din model (lagre altid 1 antal), eller behandle den i 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)

Den tilknyttede underforespørgsel gentog tal fra 0 til 99999, det er den maksimale mængde for brænding. Sammenføjningen gentages af tælleren 0... kvantitet-1 værdier.



  1. Ugyldigt nummer i Oracle SQL Case

  2. Kan ikke finde eller indlæse oracle.jdbc.driver.OracleDriver

  3. Hvordan bruger man mysqldump til en del af et bord?

  4. Importer SQL-fil til mysql