怎么在where子句中用case when + exists

2025-03-05 05:35:42
推荐回答(1个)
回答1:

简单的用法比如:
selelct user_id, user_name
from tb_users
where user_id in (select user_id from tb_course)
这个查询是查询在tb_course表中存在的user记录。
使用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)
exists用法是把主查询中的字段传入到子查询中去。如果有符合的条件,会停止全表检索,返回TRUE。所以效率才要高于IN,IN是要进行完全表检索得到集合才会结束执行。而EXISTS遇到符合的 条件,就会停止执行子查询。