select 1 from MY_TABLE where ID=42 fetch first 1 rows only;
select 1 from MY_TABLE where ID=42 and rownum=1;
select case when exists (select 1 from MY_TABLE where ID=42) then 1 else 0 end from dual;
select count(1) from MY_TABLE where ID=42;
以下是检查表中是否包含任何行的4种方法。最后一个很慢,但前3个大致相同的时间。什么是最佳实践(学术上正确)? 还有其他方法吗?
答案 0 :(得分:0)
除非抛出异常是可以接受的,在这种情况下你需要捕获它,你会想要使用rownum = 1的计数
select count(*) from my_table where id = 42 and rownum = 1;
在这种情况下,返回值0表示没有行,1表示有1行或更多行。
虽然这给出了与case case语句相同的结果,但它更简单,更容易理解。