我有以下表格:

用户
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/

10-11 22:27
查看更多