[SQL ] 同TABLE中以欄位當條件 JOIN出新欄位

看板Database (資料庫)作者 (哇哩勒)時間8年前 (2016/02/02 16:28), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
欸 我有點不知道怎麼用一句話描述 所以標題打成這樣大概會看不懂 我直接用SQL來舉例好了 我的TABLE TA 中以CX這個欄位當條件 要找出CA=XX的和CA=YY的 CA=YY若有就填入NEWY、NEWX這兩個欄位中 我的問題是,其實這個TA是簡化過的 我單獨SELECT一次SELECT * FROM TA WHERE CX='XX' 這個動作就要幾分鐘 再加上JOIN下面再SELECT一次就需要更久的時間了 想請問有沒有可以簡化這段SQL的方法? 謝謝! SELECT X.* ,Y.CX AS NEWX ,Y.CY AS NEWY FROM ( SELECT * FROM TA WHERE TA.CX = 'XX' ) X LEFT JOIN ( SELECT * FROM TA WHERE TA.CX = 'YY' ) Y ON X.PK = Y.PK; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.215.236 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1454401682.A.01C.html

02/02 17:12, , 1F
你光where單一條件就慢了 根本就沒index吧?
02/02 17:12, 1F

02/02 17:22, , 2F
而且我看不懂為何要下join
02/02 17:22, 2F

02/02 17:25, , 3F
CX='XX' CX='YY' 用PK當條件做join 還會一樣?????
02/02 17:25, 3F

02/05 13:46, , 4F
TA是我簡化過的 本來是幾個TABLE、VIEW JOIN在一起的
02/05 13:46, 4F

02/05 13:46, , 5F
資料量很大 INDEX也加了還是慢
02/05 13:46, 5F
文章代碼(AID): #1Mi6YI0S (Database)
文章代碼(AID): #1Mi6YI0S (Database)