exisits的使用

柔情痞子 提交于 2020-03-20 18:30:55

3 月,跳不动了?>>>

简单使用就是

SELECT COUNT(1) FROM risk_black_list rb
         WHERE
           
            EXISTS(
                SELECT
                  if(LEFT(mobile,1) = 0, SUBSTR(mobile ,2 ,LENGTH(mobile)) , mobile)
                FROM risk_user_address_book_info r WHERE risk_case_id=7664
                    and if(LEFT(rb.mobile,1) = 0, SUBSTR(rb.mobile ,2 ,LENGTH(rb.mobile)) , rb.mobile) = 
                        if(LEFT(r.mobile,1) = 0, SUBSTR(r.mobile ,2 ,LENGTH(r.mobile)) , r.mobile)
              );

 

简单说就是rb表 与r 表有关联字段。并且 关联逻辑在子查询中,且子查询返回结果集可以与管理字段无关,即可实现。

其原理就是 EXISTS 会对外表rb进行循环查询匹配,它不在乎后面的内表子查询的返回值是什么,只在乎有没有存在返回值,存在返回值,则条件为真,该条数据匹配成功,加入查询结果集中;如果没有返回值,条件为假,丢弃该条数据。

子查询可以使用索引,但外查询要全表扫描

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!