2017-03-03 72 views
1

我有2個表,每個表有3列加入。Mysql加入null

table A 
c1 c2 c3 
10 NULL NULL 
10 NULL 1 
10 1 NULL 

table B 
c1 c2 c3 
10 NULL NULL 
10 NULL 1 
10 1 NULL 

我想加入他們的行列,所以NULL = NULL,所以

SELECT * FROM a JOIN b ON a.c1 = b.c1 AND a.c2 = b.c2 AND a.c3 = b.c3 

我想它的加入對NULL應該匹配NULL。所以最後我得到3條記錄:

table A+B 
c1 c2 c3 c1 c2 c3 
10 NULL NULL 10 NULL NULL 
10 NULL 1 10 NULL 1 
10 1 NULL 10 1 NULL 

這是可能以某種方式?我也嘗試過IFNULL,但沒有得到我期望的結果。如果您能指出我正確的方向,我將不勝感激。非常感謝!

回答

2

使用NULL -safe相等運算符:

SELECT * 
FROM a JOIN 
    b 
    ON a.c1 <=> b.c1 AND a.c2 <=> b.c2 AND a.c3 <=> b.c3; 

然而,隨着您的樣本數據,在第一列join就足夠了:

SELECT * 
FROM a JOIN 
    b 
    ON a.c1 = b.c1 ; 
+0

瘋了,我不知道,我我也試過了,它不起作用。現在工作。我有一種感覺,也許sqlyog是有點bug的東西。順便說一句,我已經更新了這個問題,以至於僅僅在c1上加入是不夠的。非常感謝! – user2511599

+0

Gordon Linoff ...!總是第一個回答sql問題,謝謝你提供了很好的答案,我們正在向你學習新的和好的東西。 –