我有一个oracle表,我想检查是否存在。
Select 1 from table where match_id = 'xxxx'
将返回0行,1行或1的许多行,具体取决于匹配的数目。
我正在使用myBatis编写sql,那么我应该使用哪种集合来接受结果?
答案 0 :(得分:3)
一种方法是通过从双重选择中使用EXISTS
SELECT
CASE
WHEN EXISTS (
SELECT 1
FROM tablename
WHERE match_id = 'xxxx'
) THEN 1 --exists
ELSE 0 --does not exists
END
FROM dual;
或使用ROWNUM = 1
限制结果,然后计数
select count(*) from
(
Select 1 from tablename where match_id = 'xxxx' and rownum = 1
);
两者应具有相似的性能,并且比在整个表上进行select count(*)
更好。