雇员表具有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/