Mysql中如何判断特定条件数据是否存在语句
为了提高效率,我们不需要将所有的数据捞出来判断,只需要判断是否存在就可以了,即true or false的问题1采用EXISTS语句(resultType=“java.lang.Integer”,返回0/1)例1:单表查询是否存在时间大于’2021-03-05’的且money大于0的数据,如果存在(可能有多条,包括只有1条)返回int类型,1;如果不存在,则返回0select exists (SE
·
为了提高效率,我们不需要将所有的数据捞出来判断,只需要判断是否存在就可以了,即true or false的问题
1采用EXISTS语句(resultType=“java.lang.Integer”,返回0/1)
例1:
单表
查询是否存在时间大于’2021-03-05’的且money大于0的数据,如果存在(可能有多条,包括只有1条)返回int类型,1;如果不存在,则返回0
select exists (SELECT *
from a
where
money>0 and time>'2021-03-05';
如图说明此条件下存在数据:(具体几条不知道,至少一条)
例2
多表:
要查询a,b表中xId相关联,且筛选(例如传入)的某个唯一字段Code和时间为条件,查询money或总数大于0的数据是否存在,同样返回0/1
select exists (SELECT *
from a join b
on a.xId=b.xId
and a.code=1 and b.time>'2021-03-05'
where
b.money>0 or b.amount>0);
另外,语法,可以写为:
select * from 表名 where id= 1 and exist(select * from 表名 where age =20)
表明,如果存在age=20的条件和id=1则会查询出来。如果不存在一个age=20的数据,则查询无结果
2,采用limit 1(返回1/null)
例如:
上面例1
SELECT 1 as isExist
from a
where money>0
and time>'2020-03-05'
limit 1;
limit 1的作用便是提高效率,只需要查询一条而不是所有,但是如果有(1或1+)则返回1,如果没有则返回null
**再如例2:**用此写法为:
SELECT 1 as isExist(列名)
from a join b
on a.xId=b.xId
and a.code=1 and b.time>'2021-03-05'
where
b.money>0 or b.amount>0
limit 1;
如图结果为此条件下不存在:
更多推荐
已为社区贡献1条内容
所有评论(0)