我有一個版本字段的速度表。下面是部分示例:SQL - 選擇首選版本
id milepost speed version
1 0 40 1
2 0 30 2
3 5 50 1
基本上,我想要做一個「最好的版本」的查詢:嘗試以指定的速度版本讀取行(里程碑),如果某一里程碑沒有與發現該版本默認採用版本1。 因此,舉例來說,如果我的首選極速版是2,我的結果將包含來自行2和3的速度:
milepost speed
0 30
5 50
但我怎麼能建立一個單一的SELECT做到這一點? 謝謝,過一天會有一個不錯的堆棧。
編輯: 你的答案雙方都有啓發我找到一個解決方案。以下是不完整的查詢,但它給出了一個想法:
select s1.milepost_from milepost, s1.value speed from speeds s1
where s1.version = 2 or (s1.version = 1 and not exists
(select 1 from speeds s2 where s2.milepost_from = s1.milepost_from and s2.version = 2))
,關鍵是要做到這一點相匹配的主要選擇的永久信息(milepost_from的例子)子選擇。 謝謝!
您正在使用哪個DBMS? –
請用你正在使用的數據庫標記你的問題。 –
我不確定你的意思。如果您正在討論我正在使用的SQL類型,我正在使用Informix SQL的dbaccess工具。 –