У меня есть таблица скорости с полем версии. Вот неполный образец: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, чтобы сделать это? Спасибо, и у вас хороший стек за день.
EDIT: Оба ваших ответа вдохновили меня найти решение. Ниже не полный запрос, но он дает представление о том:
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 в данном примере). Спасибо!
Какая СУБД вы используете? –
Пожалуйста, отметьте свой вопрос в базе данных, которую вы используете. –
Я не уверен, что вы имеете в виду. Если вы говорите, какой тип SQL я использую, я использую инструмент dbaccess для Informix SQL. –