How can I substitute a left join in SQL

前端 未结 3 1474
情话喂你
情话喂你 2020-12-30 14:30

Can anyone tell me how can I write the equivalent of a left join without really using left joins.

Select * from a left join b on a.name = b.name.
         


        
3条回答
  •  臣服心动
    2020-12-30 14:53

    Oracle disguised left join:

    SELECT * FROM A, B
     WHERE a.name = b.name(+)
    

    Generic :

    SELECT a.*, case c.existence WHEN 1 then c.name ELSE NULL END
      FROM A
     INNER JOIN ( SELECT name name, 1 existence FROM B
                   UNION ALL
                  SELECT a.name name, 0 existence FROM A
                   WHERE a.name NOT IN ( SELECT name FROM B )
                ) C
        ON c.name = a.name
    

提交回复
热议问题