-2

我有一张像这样的桌子:

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

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

4

3 回答 3

3

就像是

select *
from myTab
where not is_available
order by id asc
limit 1
于 2013-08-10T16:29:58.030 回答
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
于 2013-08-10T17:17:10.657 回答
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
    );
于 2013-08-10T17:30:13.967 回答