美文网首页程序员
sql 语句中的case when in 与 exists

sql 语句中的case when in 与 exists

作者: 之乎者也QAQ | 来源:发表于2019-03-17 11:58 被阅读37次

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

    相关文章

      网友评论

        本文标题:sql 语句中的case when in 与 exists

        本文链接:https://www.haomeiwen.com/subject/sdgymqtx.html