Php 如何在mysql中使用连接从一个表中选择一行,从另一个表中选择多行,
我搜索了谷歌,所有的一切都是用连接来解释的,但我不需要第一个表的重复数据,我想要第一个表的单行 假设表a有两个列id和名称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
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相同,您希望后面的行的前两列为空值吗?