我有一张表:
create table myTab(
id integer primary key,
is_available boolean not null default true
);
我需要执行一个查询,只返回第一个遇到is_available
设置为false的行。
答案 0 :(得分:2)
类似
select *
from myTab
where not is_available
order by id asc
limit 1
答案 1 :(得分:1)
试试这个..
select id,is_available from myTab
where is_available = false
order by id asc
limit 1
如果你想要从最后一次插入行,那就去吧..
select id,is_available from myTab
where is_available = false
order by id desc
limit 1
答案 2 :(得分:1)
或者,您可以使用NOT EXISTS
查找第一个元组,在大多数情况下,这也是最快的解决方案:
SELECT *
FROM myTab mt
WHERE mt.is_available = False
AND NOT EXISTS (
SELECT *
FROM myTab nx
WHERE nx.is_available = False
AND nx.id < mt.id
);