php - MySQIi 选择计数并按计数排序

标签 php mysql sql mysqli

我的表看起来像这样(这只是一个例子):

id    name    title    time
----------------------------
1     name1   title1   1000
2     name1   title1   1001
3     name1   title1   1002
4     name2   title2   1003
5     name2   title2   1004
6     name3   title3   1005
7     name4   title4   1006
8     name4   title4   1007
9     name4   title4   1008
10    name4   title4   1009

我想写一个SQL语句来选择每个名字的计数以及与之相关的信息。时间实际上是一个 UNIX 时间戳,但我只是为了简化这个问题而进行了更改。

// This is will get me the trending posts for only the last minute
$time_in_past = time() - 60;
$mysqli->query(
    "SELECT COUNT(`id`) FROM `trending`........WHERE `time` < '$time_in_past'"
);

我希望在 PHP 中使用 while() 语句获取结果如下:

name: name4 count: 4 title: title4
name: name1 count: 3 title: title1
name: name2 count: 2 title: title2
name: name3 count: 1 title: title3

我希望它们按 COUNT 个排序,同时仍然得到 10 个结果(在这个例子中只有 4 个)。

最佳答案

您需要将结果分组(按名称),然后再次将结果加入您的表中:

SELECT * FROM trending NATURAL JOIN (
  SELECT   name, COUNT(*) AS cnt
  FROM     trending
  WHERE    time < ?
  GROUP BY name
) t
WHERE    time < ?
ORDER BY t.cnt DESC

关于php - MySQIi 选择计数并按计数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16382991/

相关文章:

php - 初始运行后无法执行 jquery post 或 ajax

PHP-MySQL 查询优先显示一张表的行

java - 如何解决java.sql.SQLException : Parameter index out of range?

mysql - 分层 MySQL Assets 跟踪的最佳实践

MySQL 更新/添加外键约束

mysql - 两个不同值的总和列计数

mysql - 查找(和删除)重复用户的 SQL 语句

php - 如何创建 Webhook?

php - Python : extract . 将数据提交到具有机械化的表单后的 csv 结果

php - Yii2 从用户当前 session 远程注销用户 session