SQL EXISTS Operator-note

Exists 的逻辑

EXISTS子查询用来检查是否有存在符合条件的行,如果子查询返回至少一行,则外部查询返回TRUE,否则返回 FALSE。通常在需要检查子查询是否有符合条件的行时使用。
当查询结果会返回大量资料的时,使用EXISTS较符合效能考量,优于IN,好比说下方的程式码
两个查询结果都会是一样

SELECT * FROM table_aWHERE EXISTS(SELECT * FROM table_b WHERE table_b.id=table_a.id);

以及

SELECT * FROM table_aWHERE idin (SELECT id FROM table_b);

EXISTS只需要确认是否存在符合条件的行,不需要检查完整的子查询结果。
然而IN会在执行前先计算并储存子查询的结果集,然后将外部查询的值与这个结果集进行比较。
第一个SQL使用EXISTS,当table_atable_b中有相同id的值时,就会执行,将其列出来
感觉是假设table_a中的第一笔资料的id符合条件时,就显示出来,以这个逻辑类推。

然后第二个用INSQL则是会先将SELECT id FROM table_b中的id找出来然后储存
再来才继续条件比较的部分,当table_a中的第一笔资料等于SELECT id FROM table_b中的id
就将其列出来。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章