What is semi-join in database?

前端 未结 3 501
梦毁少年i
梦毁少年i 2020-12-05 00:38

I am having trouble while trying to understand the concept of semi-join and how it is different from conventional join. I have tried some article already but not satisfied w

3条回答
  •  鱼传尺愫
    2020-12-05 00:58

    Simple example. Let's select students with grades using left outer join:

    SELECT DISTINCT s.id
    FROM  students s
          LEFT JOIN grades g ON g.student_id = s.id
    WHERE g.student_id IS NOT NULL
    

    Now the same with left semi-join:

    SELECT s.id
    FROM  students s
    WHERE EXISTS (SELECT 1 FROM grades g
                  WHERE g.student_id = s.id)
    

    The latter is much more efficient.

提交回复
热议问题