sql中in和exists

in和exists的用法

1

  • in:
    可以使用where id in(……)的方式,后面接的是一个查询结果,类似一个集合,例如select id…或者(1,2,3),返回的也是一个集合。

  • exists:
    可以使用where exists(……)或者and exists(……)的方式,只要括号里返回结果不为空,exists就返回true,否则为false。

这两个都是子查询,不过对于in,是先执行in子句,然后再和主查询链接,得到查询结果。

对于exists,先执行主查询,然后对每条查询记录,在exists中判断是否为true,如果是true则保留这条记录,否则舍弃这条数据,最后返回整个查询结果。

总结:对于主查询里的为表A,子查询里的表为B。当子查询表B小时,用in比较好,因为先执行B可以减少比较次数(这里可能不是很对,但大概就是这意思)。当主查询表A小时,用exists比较好。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 29,680评论 18 399
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕少君阅读 8,706评论 0 44
  • 截取字符串一般用 substring 就够用了。对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符...
    _流浪的猫_阅读 24,599评论 0 52
  • 西游偶得 文/萧郎 金鳞一片水中铺,官鸭双双往上游。 萧子几经天下事,归来怀处觉羞羞。
    xiaolang读书阅读 111评论 0 0
  • 秋天的夜晚,只要不下雨就很美,要是阵阵微风拂过,甚是舒服。 我静静地坐在车站,等着接儿子学习归来。 一个五岁左右的...
    征哥日记阅读 379评论 3 2
  • 最近我发现,但凡很有才华的,都曾经患有抑郁症,这样的病态我愿意有,因为才华是一种病。可惜我太正常,或者病得太轻。抑...
    smallstone11阅读 237评论 4 1