MySQL資料庫用數字輔助表實現復雜的列變行

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


 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *