在PHP / MySql中使用group_concat获取

时间:2015-12-12 09:53:32

标签: php mysql

我试图获取用逗号(,)分隔的用户名列表,并使用了这个SQL:

$sql="select group_concat(concat(' ',username,' ')) as username from user";
$var=mysql_query($sql);
while($v=mysql_fetch_assoc($var)){ $variable=$v['username']; }
echo $variable;

忽略mysql_ *函数。

上面的SQL帮助我获取了数据库中所有用户的列表并回显了它,但是当我最后使用LIMIT 3和/或ORDER BY rank时遇到了问题:

$sql="select group_concat(concat(' ',username,' ')) as username from user ORDER BY rank LIMIT 3";

添加 ORDER BY .... 后,结果没有变化。

有没有办法在SQL结束时使用ORDER BY rank LIMIT 3修复上述代码?或者还有其他方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

<强>修复

  

在传递给group_concat之前在子查询中过滤用户..

调整后的查询

select group_concat(concat(' ',username,' ') ORDER BY rank ) as username 
from
(
select id, username, rank
from user
order by rank
limit 3
) filtered_users
;

<强>输出

+-----------------------+
|       username        |
+-----------------------+
| jonny , zelda , maria |
+-----------------------+

sqlfiddle

答案 1 :(得分:1)

SELECT GROUP_CONCAT(username )  
FROM user
GROUP BY id;

http://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-group_concat.php

请检查一下,这将对您有所帮助。