我有疑问:
select (case when exists (select null from dual) then 'row exists'
else '2'
)
from dual
存在什么(select null from dual
)。
我希望select null from dual
不存在,因为我的第一个查询返回为2,但是不要检查此子查询是否为空,因为我的子查询返回了多行。
答案 0 :(得分:0)
我推测你很困惑,exists (select null from dual)
是一个真实的条件。
那就是SQL的工作原理。 exists
正在检查是否从子查询返回了任何行。根据定义,select . . . from dual
将返回一行。这就是dual
的作用。
您可能对select null
感到困惑。好吧,我也不喜欢那样。所以我通常把它写成:
select (case when exists (select 1 from dual) then 'row exists'
else '2'
)
from dual;
1
是任意的。但是,它在许多编程语言中都是“真实”的价值,并且输入非常简单。