php - MySQL 按观看次数最多的方式对图像进行排序

标签 php mysql sorting

我有一个图像表,其中存储图像 ID、标题、上传图像的用户、时间戳和文件扩展名。

我还有一个 View 表,用于记录查看图像的时间。这些列是 id、图像 id、时间戳和查看图像的用户。

我需要但不知道该怎么做的是运行一个 SQL 查询,该查询将按观看次数最多的顺序返回一组图像。

我一直在此处和 Google 上四处寻找,但只是不知道实际搜索什么。

最佳答案

SELECT images.*, count(views.view_id) view_count
FROM images
LEFT JOIN views on views.image_id = images.image_id
GROUP BY images.image_id
ORDER BY view_count DESC

http://sqlfiddle.com/#!2/a669b/5

GROUP BY 子句告诉“聚合函数”(计数、总和、最小值、最大值等)如何运行。在这种情况下,我们按图像分组并获取每张图像的浏览量。 COUNT只计算非空值,我们不想计算不存在的 View ,所以我们关闭 views.view_id .

如果您执行 INNER JOIN 而不是 LEFT JOIN,它只会返回具有 View 的图像。 LEFT JOIN 允许我们获得零计数。

关于php - MySQL 按观看次数最多的方式对图像进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723534/

相关文章:

php UPDATE 查询不起作用

Python 字典排序

php - MySQL 中多行排序时间

sorting - 如何按Grails中关联表中的列对结果排序?

php - 使用 PHP 从 PHP 文件中仅获取 HTML 代码?

php - 使用 PHP 的数据表

php - 非常基本的查询在 PMA 中工作但在 PHP 中不起作用

php - 在 SWFUpload 上发送电子邮件确认

mysql - SQL SELECT DISTINCT 子查询错误 : 1241

php - 统计数据并手动插入,日期有具体数字