Php 如何在mysql中使用连接从一个表中选择一行,从另一个表中选择多行,

Php 如何在mysql中使用连接从一个表中选择一行,从另一个表中选择多行,,php,mysql,Php,Mysql,我搜索了谷歌,所有的一切都是用连接来解释的,但我不需要第一个表的重复数据,我想要第一个表的单行 假设表a有两个列id和名称 id | name 1 | jhon 2 | rock 表b有两列id,这是引用表a的id和位置的外键 id | nickname 1 | steve 1 | smith 2 | kiran 我想把它作为 id | name | nickname 1 | jhon | steve | smith 您可以使用简单的内部JOI

我搜索了谷歌,所有的一切都是用连接来解释的,但我不需要第一个表的重复数据,我想要第一个表的单行

假设表a有两个列id和名称

id | name

1  | jhon

2  | rock
表b有两列id,这是引用表a的id和位置的外键

id | nickname

1  | steve

1  | smith

2  | kiran
我想把它作为

id | name | nickname

1  | jhon | steve

          | smith

您可以使用简单的内部
JOIN
来执行此操作,例如:

SELECT ta.id, ta.name, tb.nicname
FROM tablea ta JOIN tableb tb ON ta.id = tb.id;
这将导致一个用户有多条记录,若要仅获取一条记录,您可以使用
GROUP\u 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 ;

这将返回一个额外的列,但您可以在解析结果时忽略该列。

您可以在group byHello sir上解析昵称,第一个为tablea提供重复数据的昵称,我不想对其进行分组,因为通过解析,我无法在项目中获取单独的列数据。我有多个列,不是2或3,我必须从两个表中选择*,所以如果ID相同,您希望后面的行的前两列为空值吗?