作者walilaV (哇哩勒)
看板Database
标题[SQL ] 同TABLE中以栏位当条件 JOIN出新栏位
时间Tue Feb 2 16:27:59 2016
欸 我有点不知道怎麽用一句话描述
所以标题打成这样大概会看不懂
我直接用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://webptt.com/cn.aspx?n=bbs/Database/M.1454401682.A.01C.html
1F:推 moyasi: 你光where单一条件就慢了 根本就没index吧? 02/02 17:12
2F:推 moyasi: 而且我看不懂为何要下join 02/02 17:22
3F:→ moyasi: CX='XX' CX='YY' 用PK当条件做join 还会一样????? 02/02 17:25
4F:→ walilaV: TA是我简化过的 本来是几个TABLE、VIEW JOIN在一起的 02/05 13:46
5F:→ walilaV: 资料量很大 INDEX也加了还是慢 02/05 13:46