SQL Left Join - 多次相同的结果

时间:2011-08-04 13:42:02

标签: php mysql sql left-join

我有以下表格:

用户

id |名称

信息

id |信息| user_id

(表格信息中的user_id是外键=>连接到表用户中的ID)

用户可能在info表中有许多条目(多行中的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里面修复它?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

$lastname="";
$res=mysql_query($yourQuery);
while($row=mysql_fetch_assoc($res)){
    if($row['name']!=$lastname){
        $lastname=$row['name'];
        print $lastname.':'; // first time print it
    }
    print $row['info'];
}