shou ge| Blog

作为一只禽兽我感觉鸭梨很大

0%

sql判断记录是否存在

插图

根据条件从数据库表中查询 [存在] 与 [不存在]两种状态。

在业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍写法如下:

SQL

1
SELECT COUNT(*) FROM tableName WHERE xxx = 123 AND is_deleted = 0;

JAVA

1
2
3
4
5
int count = xxDao.countxxByxx(params);
if (count > 0) {
return true;
}
return false;

推荐写法

推荐优化方案如下:

SQL

1
SELECT 1 FROM tableName WHERE xxx = 123 AND is_deleted = 0 LIMIT 1;

XML

采用的ORM以mybatis 为例:

1
2
3
4
5
6
7
8
9
10
11
<-- 注意:resultType--> 
<select id="existXxxxByXxx" resultType="integer">
SELECT
1
FROM tableName
WHERE
xxx = 123
AND
is_deleted = 0
LIMIT 1
</select>

JAVA

1
2
3
Integer exist = xxDao.existXxxxByXxx(params);
// return exist != null;
return Objects.nonNull(exist);

注意: 此处推荐采用包装类型来进行接收 , 直接通过判空来判断是否存在, SQL不在继续使用COUNT, 在SQL语句后面添加 LIMIT 1, 让数据库查询时遇到一条数据就返回, 不用再继续往下查找。

在查询或者更新的时候 推荐尽量加上LIMIT ,养成良好的编码习惯。