这是手头的任务:我有一个名为“reports”的数据库表,该表中的一列是“submitted_by”。此列包含提交报告的人的用户名。
现在,我需要做的是显示一个用户名列表,这些用户名按他们发布的报告数量排序。所以像这样的东西应该出来:
用户 |报告
标记 | 25
约翰 | 18
玛丽 | 7
等等
我已经编写了这段 PHP/MySQL 代码来执行此操作,它非常简单,但我想知道是否可以将这些合并到 1 个查询中。另外,这会在效率方面有很大提升吗?
$users=array();
$result=mysql_query("select id,submitted_by from reports group by submitted_by");
while($row=mysql_fetch_array($result)){
$result1=mysql_query("select id,submitted_by from reports where submitted_by='$row[submitted_by]' ");
$users[$row[submitted_by]]=mysql_num_rows($result1);
}
arsort($users);
然后只是回显来自 $users
的每个元素。
最佳答案
试试下面的代码:
$users = array();
$result=mysql_query("SELECT id, submitted_by, COUNT(*) as cnt FROM reports GROUP BY submitted_by ORDER BY COUNT(*) DESC");
while($row=mysql_fetch_array($result)){
$users[$row['submitted_by']] = $row['cnt'];
}
关于php - 将这两个 MySQL 查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10721336/