SQL优化时我们提到,很多时候用 exists 代替 in 是一个好的选择,这里明确说一下exists的用法和作用。
语法:
SELECT column_name(s) FROM table_name WHERE EXISTS (SELECT column_name FROM table_name WHERE condition);
意义:
EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。
注意:
EXISTS子句中不允许有COMPUTE子句和INTO关键字
EXISTS中column_name实际上是不影响查询结果的,所以为了更快地检索,建议只写一个主键字段,另外EXISTS中where子句要和外面的表有逻辑关系,否则要不查询所有数据,要不一行数据都不出现。
用法:
在子查询中使用NULL仍然返回结果集
select * from TableIn where exists(select null) select * from TableIn//与上方效果相同
比较使用EXISTS和IN的查询的使用,返回结果相同
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME) select * from TableIn where ANAME in(select BNAME from TableEx比较使用EXISTS和)
比较使用 EXISTS 和 ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME) select * from TableIn where ANAME=ANY(select BNAME from TableEx)
如果帮助到你,请赏杯奶茶喝~
- 本文链接: https://www.shx1024.top//index/article/details/article_id/45.shtml
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。