-1
我們有ID表如下從組合SQL選擇從多值一個值
id | newsecid
--- | ---
1 | 10
2 | 20
3 | 30
單ID將有單newsecid
其他表的壯舉
id | featid
--- | ---
1 | 5
1 | 6
2 | 2
2 | 4
一個ID可以有多個專長ID
參考表
newsecid | featid | oldsecid
--- | --- | ---
6 | null | 2
2 | null | 6
3 | null | 5
1 | NULL | 1
1 | 5 | 4
16 | NULL | 16
16 | 4 | 13
25 | NULL | 26
25 | 6 | 25
26 | NULL | 26
26 | 6 | 24
當有對同一ID的多個featids的,我們把它們看成空與裁判桌
對於所有newsecids加入沒有必要的newsecid組合和featid得到oldsecid從ref表中,因爲總是隻有一個值,比如在newsecids的情況下,6,2和3的featid爲null。
但是,對於只有newsecids 1,16,25,26,我們必須從ref表中的newsecid和featid的組合中選擇oldsecid,因爲有2個值。一個爲空featid,另一個爲一些featid值。
其中對於組合沒有要求我使用
select c.oldsecid from id i
inner join feat f on i.id=f.id
inner join ref c on i.newsecid = c.newsecid
使用這個我從裁判表中獲取oldsecid 2,6,5由於只有一個值的情況下。
對於使用上述查詢的情況1,16,25,26,我得到了隨機的oldsecid。在此我需要那個fesetid不爲null的oldsecid。
我們可以將newsecid的條件硬編碼爲1,16,25,26,因爲我不只有這些情況。
任何幫助
'Id'是一個可怕的表名... – jarlh
@jarlh:就一個例子 – Remon