在网上找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)
网友评论