我搜索了谷歌,所有内容都使用连接进行了解释,但我不需要第一个表的重复数据,我想要第一个表中的单行。
考虑表 a 有两列 id 和 name
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_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 ;
这将返回一个额外的列,但您可以在解析结果时忽略它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句