台灣最大程式設計社群網站
線上人數
1156
 
會員總數:241117
討論主題:186792
歡迎您免費加入會員
討論區列表 >> MySQL >> mysql 查詢指令問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
mysql 查詢指令問題
價值 : 50 QP  點閱數:195 回應數:3

樓主

skyblue
門外漢
0 2
16 2
發送站內信

各位先進,

有關mysql查詢的問題,
原資料表如下:

A欄 B欄 C欄 D欄
AAA 1701 A11 15623
AAA 1702 A11 12334
AAA 1703 A11 23354
AAA 1701 B22 2223
AAA 1702 B22 3152
AAA 1703 B22 3324
AAA 1701 C33 13215
AAA 1702 C33 12355
AAA 1703 C33 12346

==============================================
想要的查詢結果如下方資料表所示,
我的查詢條件是不是哪裡有問題?導致執行時間很久,大約都需要1~2分鐘,是不是有其他的查詢方式?或是哪裡需要修改?

SELECT a.A欄, a.B欄, (select D欄 from 資料表 where A欄=a.A欄 and B欄=a.B欄 and C欄='A11') AS A11/D欄值, (select D欄 from 資料表 where A欄=a.A欄 and B欄=a.B欄 and C欄='B22') AS B22/D欄值, (select D欄 from 資料表 where A欄=a.A欄 and B欄=a.B欄 and C欄='C33') AS C33/D欄值 FROM 資料表 a WHERE A欄='AAA' order by B欄 desc

A欄 B欄 A11/D欄值 B22/D欄值 C33/D欄值
AAA 1703 23354 3324 12346
AAA 1702 12334 3152 12355
AAA 1701 15623 2223 13215

搜尋相關Tags的文章: [ mysql ] , [ 查詢指令 ] ,
本篇文章發表於2017-08-22 11:32
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

skyblue
檢舉此回應


原資料表
A欄 B欄 C欄 D欄
AAA 1701 A11 15623
AAA 1702 A11 12334
AAA 1703 A11 23354
AAA 1701 B22 2223
AAA 1702 B22 3152
AAA 1703 B22 3324
AAA 1701 C33 13215
AAA 1702 C33 12355
AAA 1703 C33 12346


查詢結果顯示
A欄 B欄 A11/D欄值 B22/D欄值 C33/D欄值
AAA 1701 15623 2223 13215
AAA 1702 12334 3152 12355
AAA 1703 23354 3324 12346

本篇文章回覆於2017-08-22 11:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

Daimom
捐贈 VP 給 Daimom 檢舉此回應
ref https://stackoverflow.com/questions/7674786/mysql-pivot-table
本篇文章回覆於2017-08-22 13:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

skyblue
檢舉此回應
thanks Daimom....

方式改成如下,速度提升不少

SELECT A欄, B欄, MAX(IF(C欄='A11', D欄, NULL))AS A11/D欄值, MAX(IF(C欄='B22', D欄, NULL))AS B22/D欄值, MAX(IF(C欄='C33', D欄, NULL))AS C33/D欄值 FROM 資料表 WHERE A欄='AAA' group by B欄
本篇文章回覆於2017-08-23 08:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.