我有以下表格:
用户
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里面修复它?
答案 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'];
}