Posted on 2019-01-11 09:33
Prayer 阅读(383)
评论(0) 编辑 收藏 引用 所属分类:
DB2
参考:https://www.2cto.com/database/201109/104960.html;http://ask.csdn.net/questions/680006
1 :
SELECT
*
FROM
华东
WHERE
公司代码 IN ( SELECT 公司代 FROM 备选客户 WHERE 公司代 != '' AND 公司代 IS NOT NULL );
2:用exists替换
SELECT
*
FROM
华东
WHERE
EXISTS (
SELECT
公司代
FROM
备选客户 where 华东.公司代码=`备选客户`.公司代);
3: in和exists一点区别
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
---------------------
作者:csdncooker
来源:CSDN
原文:https://blog.csdn.net/csdncooker/article/details/79299258
版权声明:本文为博主原创文章,转载请附上博文链接!