如果只有一行,我需要选择一行,如果有更多行,它应该选择 0 行。
最佳答案
如果您使用 PL/SQL,则使用 select-into
选择列会抛出 too_many_rows
如果返回多于一行,则异常:
declare
var table.column%type;
begin
select column
into var
from table
where ...;
end;
如果您只想使用 SQL 执行此操作,则可以执行以下操作:
select *
from
(select s.*, count(*) over () c
from
(select *
from table
where ...
and rownum <= 2
) s
)
where c = 1
更新
正如 DazzaL 在评论中所说,
rownum <= 2
的原因如果结果集中的行超过 2 行,则限制是短路查询。如果数据集很大,这可以带来显着的性能优势。
关于sql - 如果查询返回一行,如何选择一条记录,如果查询返回更多行,如何选择不记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761175/