看到一个挺有意思的SQL知识点,分享一下~
有人问了IN和EXISTS的区别,我来简单说说我的理解哈。
EXISTS后面跟的是子查询,作用是检查有没有符合条件的行存在,返回的结果只有true或false。执行顺序是先跑主查询,然后每一行去子查询里找有没有对应的记录,有就显示这条数据,没有就不显示。总的来说就是有没有,有就有。
而IN后面的子查询是会先执行完,把结果集都查出来,主查询再从这个结果集里去找匹配的数据。IN是在不在这个列表里,所以效率上可能比EXISTS差点意思,特别是数据量大的时候。
总结一句:EXISTS看是否存在,IN看是否在列表里。用对了效率差很多!
有人问了IN和EXISTS的区别,我来简单说说我的理解哈。
EXISTS后面跟的是子查询,作用是检查有没有符合条件的行存在,返回的结果只有true或false。执行顺序是先跑主查询,然后每一行去子查询里找有没有对应的记录,有就显示这条数据,没有就不显示。总的来说就是有没有,有就有。
而IN后面的子查询是会先执行完,把结果集都查出来,主查询再从这个结果集里去找匹配的数据。IN是在不在这个列表里,所以效率上可能比EXISTS差点意思,特别是数据量大的时候。
总结一句:EXISTS看是否存在,IN看是否在列表里。用对了效率差很多!