繁体   English   中英

SQL Left Join - 多次相同的结果

[英]SQL Left Join - same results multiple times

我有以下表格:

用户

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

如何只显示一次用户名? 我在SELECT之后尝试使用DISTINCT关键字,但它没有帮助。 同时我在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

$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'];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM