2012-08-17 122 views
0

我有3個表中,a,B,CMySQL的複雜選擇,左連接

它可以添加左連接兩個表中選擇由左添加第三表連接:

例如:

SELECT * from a,b where a.x=b.x and a.z=b.z and b.y>0 

(有我需要的只選擇在哪裏可以找到完全匹配由規則的記錄)

現在我想添加第三,從表中的某些領域,但也有可能情形:第3表可能不續ain數據爲某些表a,b的記錄。據我瞭解,我可以使用左連接?

如何選擇一些這樣的:

SELECT a.*,b.*, c.Q from a,b where a.x=b.x and a.z=b.z and b.y>0 left join c on a.x=c.x 

回答

2

如果你不喜歡寫內部連接:

SELECT a.*,b.*, c.Q 
FROM (a,b) 
LEFT JOIN c 
ON a.x=c.x 
WHERE a.x=b.x and a.z=b.z and b.y>0 
+0

的'內join'語法被普遍接受的更合適的方法連接表,尤其是在使用多個連接時(由於可讀性)。但是,我相信他們的表現是相似的。 – 2012-08-17 16:37:11

+0

謝謝你的回覆傢伙!現在所有作品都完美了 – valterriann 2012-08-17 17:00:01

1
SELECT a.*,b.*, c.Q 
FROM a 
INNER JOIN b 
    ON a.x=b.x AND a.z=b.z AND b.y>0 
LEFT JOIN c 
    ON a.x=c.x