如何在SQL中使用多个LEFT JOIN?

时间:2011-02-09 20:51:21

标签: sql join left-join

是否可以在sql查询中使用多个左连接?

    LEFT JOIN
        ab 
    ON
        ab.sht = cd.sht

我想添加一个这样的附加查询吗? 它会起作用吗?

    LEFT JOIN
        ab AND aa
    ON
        ab.sht = cd.sht
           AND
        aa.sht = cc.sht

这会有用吗?

4 个答案:

答案 0 :(得分:47)

是的,这是可能的。每个连接表需要一个ON。

LEFT JOIN ab
  ON ab.sht = cd.sht
LEFT JOIN aa
  ON aa.sht = cd.sht

顺便说一下,http://bentilly.blogspot.com/2011/02/sql-formatting-style.html中描述了我对复杂SQL的个人格式偏好。如果你要写很多这样的话,它可能会有所帮助。

答案 1 :(得分:27)

是的,但语法与您的语法不同

SELECT
    <fields>
FROM
    <table1>
    LEFT JOIN <table2>
        ON <criteria for join>
        AND <other criteria for join>
    LEFT JOIN <table3> 
        ON <criteria for join>
        AND <other criteria for join>

答案 2 :(得分:10)

所需的SQL将是: -

SELECT * FROM cd
LEFT JOIN ab ON ab.sht = cd.sht
LEFT JOIN aa ON aa.sht = cd.sht
....

希望它有所帮助。

答案 3 :(得分:0)

您有两种选择,具体取决于您的表格顺序

create table aa (sht int)
create table cc (sht int)
create table cd (sht int)
create table ab (sht int)

-- type 1    
select * from cd
inner join cc on cd.sht = cc.sht
LEFT JOIN ab ON ab.sht = cd.sht
LEFT JOIN aa ON aa.sht = cc.sht

-- type 2
select * from cc
inner join cc on cd.sht = cc.sht
LEFT JOIN ab
LEFT JOIN aa
ON aa.sht = ab.sht
ON ab.sht = cd.sht