php - 将这两个 MySQL 查询合并为一个

标签 php mysql arrays

这是手头的任务:我有一个名为“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/

相关文章:

php - 这种ajax行为是否正常,安全方面

php - PHP $_SESSION 变量键中的保留字符

MySQL 大量记录的性能 - 分区?

mysql - MySQL 中的右外连接

php - 将数组和多维数组的组合插入到 MySQL 表中

php - 从字符串中删除特定的子字符串

php - 如何使用 PHPMailer 向 Mailcatcher 发送电子邮件?

mysql - 从 SQL 数据库服务器更改为托管服务器的 mySQL

C++ 类型转换错误设置和从数组中获取派生类成员 (**)

java - 遇到 Java 数组索引错误