我有一个版本字段的速度表。下面是部分示例: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工具。 –