程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL用數字輔助表實現復雜的列變行

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

編輯: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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved