使用OR运算符时,查询将返回右边的左边条件吗?

问题描述 投票:0回答:1

我想返回single行,但要一个查询限定两个条件。

例如

SELECT * FROM user WHERE admin < 10 OR admin > 100 LIMIT 1

当我查询此内容时,它会返回它发现管理值小于10的第一行吗?如果没有,我将如何实现?

sql operators operator-keyword
1个回答
0
投票

从评论:

我想找到具有admin <10的第一行,但是如果没有具有该值的行,那么我想返回具有admin> 100的第一行。

一个选项使用union allnot 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
)

请注意,如果要向其添加order by子句,则查询更有意义。在不使用limit的情况下使用order by会导致从满足谓词的行中返回abritrary

行。
© www.soinside.com 2019 - 2024. All rights reserved.