Mysql中我们用的最多的多个值查询in,但in有很多缺点,例如效率不高,如果存在null值Mysql还无法执行导致整个程序报错.接下来这篇帖子教你如何使用mysql中的exists.
在工作中,往往我们会看到这样的sql,难以理解.所以今天为了让读者能够看懂.做一个简单的例子
假设我们有两张表一张是app_sequ_pb 另一张是app_user
app_sequ_pb 是用户屏蔽表 通过此表 我们可以添加屏蔽的用户
用户表则有很多数据,但是我们如何知道,我们屏蔽的是那些用户呢?
执行sql执行sql得出上图:
select * from app_user where exists(select id from app_sequ_pb where app_user.id = userid)
select * from app_user where !exists(select id from app_sequ_pb where app_user.id = userid)
在exists前面加!取反 得到所有未屏蔽的数据.
总结:
A表和B表需要有关联关系.exists内的sql必须关联A表,select * 返回的结果可以只写一个字段提高查询效率.