[英]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.