2017-05-05 74 views
1

我搜索了谷歌,所有內容都用連接解釋,但我不需要第一個表的重複數據,我想從第一個表。如何從一個表中選擇一行,使用mysql中的連接從其他表中選擇一行,

考慮表有兩個列編號和名稱

id | name 

1 | jhon 

2 | rock 

和表B有兩個ID是外鍵引用表中的ID,並把

id | nickname 

1 | steve 

1 | smith 

2 | kiran 

,我想出去把作爲

id | name | nickname 

1 | jhon | steve 

      | smith 
+0

您可以將組別上的暱稱串接 – Chinito

回答

0

您可以使用簡單的內部JOIN來做到這一點,例如:

SELECT ta.id, ta.name, tb.nicname 
FROM tablea ta JOIN tableb tb ON ta.id = tb.id; 

這將導致多個記錄一個用戶,得到的只有一個記錄,你可以使用GROUP_CONCAT,如:

SELECT ta.id, ta.name, GROUP_CONCAT(tb.nicname) 
FROM tablea ta JOIN tableb tb ON ta.id = tb.id 
GROUP BY ta.id, ta.name; 

更新

爲了獲得預期的輸出,您可以在查詢中定義變量並使用IF返回值,例如:

SELECT IF(@previous = ta.id, '', ta.id) as id, IF(@previous = ta.id, '', ta.name) as name, 
tb.nickname, @previous := ta.id 
FROM table1 ta JOIN table2 tb ON ta.id = tb.id, 
(SELECT @previous := '') a ; 

這將返回一個額外的列,但您可以在解析結果時忽略該列。

+0

您好先生,第一個給tablea重複數據,我不想GROUP_CONCAT,因爲通過拼接我無法在我的項目中獲得單獨的列數據。我有多列不是2或3,我必須從這兩個表中選擇* – Mahantesh

+0

因此,如果id相同,您希望後續行的前兩列爲空值? –

+0

是的,先生,只是我不想浪費記憶。 – Mahantesh

相關問題