确定是否存在至少一行具有给定条件的行

2024-01-07

Employee 表有 ID 和 NAME 列。名称可以重复。我想查明是否至少有一行名称为“kaushik%”。

所以查询应该返回 true/false 或 1/0。

是否可以使用单个查询找到它。 如果我们尝试类似的事情

select count(1) from employee where name like 'kaushik%'

在这种情况下,它不会返回 true/false。 我们还迭代表中的所有记录。简单的 SQL 中有没有办法,每当获取满足条件的第一条记录时,它就应该停止检查进一步的记录。 或者这样的事情只能在 Pl/SQL 块中处理?

EDIT *


通常,您可以将其表达为

SELECT COUNT(*)
  FROM employee
 WHERE name like 'kaushik%'
   AND rownum = 1

哪里的rownum = 1谓词允许 Oracle 在找到第一个匹配行后立即停止查找,或者

SELECT 1
  FROM dual
 WHERE EXISTS( SELECT 1
                 FROM employee
                WHERE name like 'kaushik%' )

哪里的EXISTS子句允许 Oracle 在找到第一个匹配行后立即停止查找。

第一种方法更紧凑,但在我看来,第二种方法更清晰,因为您实际上是在确定特定行是否存在,而不是尝试计算某些内容。但第一种方法也很容易理解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定是否存在至少一行具有给定条件的行 的相关文章

随机推荐