仅返回将返回一组行的select的一行

时间:2013-08-10 16:27:26

标签: sql postgresql sql-limit

我有一张表:

create table myTab(
  id integer primary key,
  is_available boolean not null default true
);

我需要执行一个查询,只返回第一个遇到is_available设置为false的行。

3 个答案:

答案 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
    );