sql 语句中的case when in 与 exists

在网上找case when in 与 exists资料是很多的例子对于这句sql语句没有详细的解释个人理解是exists 返回的是false 与true 然后在根据case when 的规则判断输出的是1或者0。理解思路在下文。

select case when exists(select 1 from t_test c where c.name = 'zhangsan'
    and c.age = 23 ) then 1 else 0 end
from dual;

in 在 子查询的集合中

IN是要进行完全表检索得到集合才会结束执行。

简单的用法比如:
selelct user_id, user_name
from tb_users
where user_id in (select user_id from tb_course)

exists 存在 返回的是true 与false

exists用法是把主查询中的字段(user_id, user_name)传入到子查询中去。如果有符合的条件,会停止全表检索,返回TRUE。所以效率才要高于IN,IN是要进行完全表检索得到集合才会结束执行。而EXISTS遇到符合的 条件,就会停止执行子查询。

select user_id, user_name
from tb_users
where exists (select 1 from tb_course where tb_course.user_id = tb_users.user_id)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容