雇员表具有ID和NAME列。名称可以重复。我想找出是否至少有一个名称类似“kaushik%”的行。

因此查询应返回true / false或1/0。

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

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

在这种情况下,它不会返回true / false。
另外,我们正在遍历表中的所有记录。简单SQL中是否存在这样的方式,使得每当获取满足条件的第一条记录时,它都应停止检查其他记录。
还是只能在Pl / SQL块中处理这样的事情?

编辑*
贾斯汀提供的第一种方法看起来正确答案
SELECT COUNT(*) FROM employee WHERE name like 'kaushik%' AND rownum = 1

最佳答案

通常,您会这样表示

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一旦找到第一个匹配的行,便立即停止查找。

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

关于sql - 识别是否存在至少具有给定条件的一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14566910/

10-12 21:41
查看更多