我有以下表格:
用户 id
|名称
信息
身份证 |信息 | user_id
(来自表 信息的 user_id 是外键 => 连接到来自表 用户 的 id)
用户可能在信息表中有许多条目(许多行中的 user_id 相同)。
现在我想获取数据并像这样显示它:
username:
... info ....
例子:
admin:
aaa
bbb
ccc
someuser:
ddd
eee
fff
所以我像这样使用 LEFT JOIN:
SELECT users.name, info.info
FROM users
LEFT JOIN info
ON users.id = info.user_id
但我得到的是以下内容:
admin:
aaa
admin:
bbb
admin:
ccc
如何只显示一次用户名?我试过在
DISTINCT
之后使用 SELECT
关键字,但没有帮助。同时我在 php 代码中解决了这个问题,但是有什么办法只能在 sql 中解决这个问题吗? 最佳答案
SELECT users.name, GROUP_CONCAT(info.info SEPARATOR 'whateveryouwant') as info
FROM users
INNER JOIN info ON (users.id = info.user_id)
GROUP BY users.name
默认情况下
group_concat
使用 ,
作为分隔符,但您可以根据需要进行更改。链接:
http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat
关于php - SQL Left Join - 多次相同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6942510/