在单个查询中,我想要实现的是返回与特定条件匹配的记录的id,如果没有找到,则返回另一个标准。所以这两个标准有不同的优先级和简单的'或'不会这样做。
我想出了两个解决方案,但想知道这是否可以简化:
select id,1 as n from <tablename> where <criterion1>
union select id,2 as n from <tablename> where <criterion2>
order by n asc limit 1;
或:
select coalesce ((select id from <tablename> where <criterion1>),
(select id from <tablename> where <criterion2>));
我更喜欢的是不必重复两个查询的共同点(实际上我选择了更多列,因此必须并行维护这些列),并且两个查询都涉及同一个表。
如果有快捷方式,我很乐意了解它。
答案 0 :(得分:0)
如果您想要一行,请使用@PathParam
和order by
:
limit