2014-06-16 71 views
0

[同崗但有點複雜問題]LEFT JOIN幫助MySQL的

它應該是簡單的,但我缺少something.I有2個表

table_one(toneid是自動增量與主鍵)

toneid id  email 
    1  634  45 
    2  643  23 
    3  648  55 

table_two(TID被自動增量與主鍵)

tid 
633 
634 
643 
648 

我想要的結果應該是

tid  email 
633  null 
634  45 
643  23 
648  55 

我的查詢是

select table_two.tid, 
     table_one.id, 
     table_one.email 
from table_two 
     left join table_one on table_one.id = table_two.tid 

但它返回

tid  email  
634  45 
643  23 
648  55 
+1

或者可以反向加入,即'from table_two left join table_one on table_one.id = table_two.tid' –

+0

謝謝阿比克。現在解決了。 – user3671491

回答

1

你幾乎得到了它,只是左加入的其他方式:

select table_two.tid, 
     table_one.id, 
     table_one.email 
from table_two 
     left join table_one on table_one.id = table_two.tid 

磨片總是要讀成這樣:從那個有更多的價值,並留下了加入該表的全部內容可能有註冊管理機構。所以在你的情況下,將table_two左與table_one連接。

+0

啊......成功。謝謝你的伴侶。我有一些複雜的事情來我的方式,所以我很快會發佈一個不同的問題。再次感謝。 – user3671491

+0

我已經編輯過這個問題。現在它只返回3行而不是全部。 – user3671491

1

你的表是在錯誤的順序。使用LEFT JOIN,但要第一個表要保留所有記錄的一個:

select table_two.tid, table_one.id, table_one.email 
from table_two left join 
    table_one 
    on table_one.id = table_two.tid; 

我發現使用left join s到連接這些表是最直觀的方法的結構。就我個人而言,我很難理解混合左,右和內連接的查詢。通常你所擁有的是「駕駛」表,並且首先將它看作是編寫查詢的最清晰的方法。

+0

謝謝戈登的可愛解釋。 – user3671491

+0

我用新的信息編輯了這個問題。但由於某種原因查詢返回的只有3行而不是4行。 – user3671491