MySQL用數字輔助表實現復雜的列變行 某天,QQ上一個圈子內的網友發來一個求助信息 :
PropID name Amount 3 元寶 2 2 樂豆 3
能否用一條sql 寫成輸出,就是復制對應Amount 的條數 :
PropID name 3 元寶 3 元寶 2 樂豆 2 樂豆 2 樂豆
研究了下,用普通的group by sum if case when之類的搞不定,得換種思路,一時hang住了,就與網友Mr.W說起,他提供了數字輔助表的思路。 OK,搞定了,SQL如下:
select t1.propid,t1.name from tb t1,(select 1 as num union select 2 as num union select 3 as num ) t2 where t1.amount>= t2.num order by 1;中間的,
(select 1 as num union select 2 as num union select 3 as num ) t2部分 最好你另外建一個num單列輔助表表,從1自增到N,給個幾萬就好,然後關聯查方便一些自連接的sql判斷,select貌似也沒循環生成數字的功能。如下表nums