2017-05-05 81 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

相关问题