添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

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)