Из комментариев:
Я хочу найти первую строку, которая имеет admin <10, но если нет строк, имеющих это значение, то я хочу вернуть первую строку, которая имеет admin > 100
В одной опции используются union all
и not exists
:
(select * from users where admin < 10 limit 1)
union all
(
select *
from users
where
admin > 100
and not exists (select 1 from users where admin < 10)
limit 1
)
Другое решение - условная сортировка:
select *
from users
where admin < 10 and admin > 100
order by case when admin < 10 then 1 else 2 end
limit 1
Примечание что ваш запрос будет иметь больше смысла, если вы добавите к нему предложение order by
. Использование limit
без order by
приводит к тому, что строка abritrary возвращается из тех, которые удовлетворяют предикатам.