2015-08-28 149 views
-1

我有一個基表和許多查詢結果MySQL的左連接和零

首先是基本列表:

a, b 
name1, type1 
name2, type2 
name3, type3 
name4, type4 

b是ID

別人SELECT結果像這樣(計在另一個表中的類型)

null, 5 
type1, 3 
type4, 3 

null是5,因爲在另一個表中許多行沒有任何類型PE

如果我使用LEFT JOIN

type1, 3 
type4, 3 

,而不是空行,因爲空不在基地名單中包括

我做了一招:

​​

結果:

name1, type1 
name2, type2 
... 
name4, type4 
none, null 

B UT,如果我試過左連接,沒有變化

name1, type1, 3 
name2, type2, null 
... 
name4, type4, 3 
none, null, null 

我怎樣才能將null,5值放入連接結果? (好吧,我可以使用左,右OUTER JOIN,但我有很多結果表,我想加入基地名單)

謝謝你這麼多了,對不起我的英文不好:)

+0

我想你想實現'全外join',不幸的是不能在MySQL中支持。按照您的建議使用LEFT/RIGHT和union可以模擬行爲。 [示例](http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql) – xQbert

+0

向我們展示了表和post預期結果集的實際數據示例。併發布完整的查詢字符串不只是*其他人是SELECT *或*但如果我嘗試了左加入,* – Alex

回答

0

我解決了這個問題。 我閱讀了mysql文檔,使用了空值 https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html 「不能使用算術比較運算符,如=,<或<>來測試NULL。」 所以我改變了ON子句:

SELECT * FROM 
(SELECT...) a 
LEFT JOIN 
(SELECT...) b 
ON a.id = b.id OR (a.id IS NULL AND b.id IS NULL) 

b select加入到a select與空值