如
select * from HouseType HT
如果下面這個leftjon查詢有記錄
LEFT JOIN ( SELECT img,img_t,img_s,itemID,imgType from ClientHouseImg where imgType='TypeImg') ST on (HT.HouseTypeID=ST.itemID)
否則
LEFT JOIN (SELECT img,img_t,img_s,itemID,imgType from ClientHouseImg where imgType='ybj') SH on (SH.itemID=HouseID)
意思,兩個left JOIN 只能二選一,或者說在前面這個沒有記錄的情況下,再用第二個 left JOIN 不知怎么實作,請高人指點,萬分感謝
uj5u.com熱心網友回復:
寫個if先判斷一下uj5u.com熱心網友回復:
select *
from
(select *,dense_rank() over (partition by ST.itemID order by rn) as rn_new from HouseType HT
LEFT JOIN ( SELECT img,img_t,img_s,itemID,imgType,
case when imgType='TypeImg' then 1 else 2 end as rn from ClientHouseImg where imgType in ('TypeImg','ybj')) ST on (HT.HouseTypeID=ST.itemID)) as A
where A.rn_new=1
uj5u.com熱心網友回復:
非常感謝,好象是可以實作我的需求,就是不明白 case when imgType='TypeImg' then 1 else 2 ...這些陳述句是什么意思,為什么成立就選1,否2 這1和2代表什么意思,能指點下嗎?uj5u.com熱心網友回復:
這個欄位相當于設定了個優先級標志,1高于2。
對于1個ItemID而言,如果同時有1和2的記錄,那就取1,否則就說明只有2的記錄了,這個是通過dense_rank() over (partition by ST.itemID order by rn) as rn_new以及rn_new=1來實作的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/268165.html
標籤:疑難問題
下一篇:研一