我有一个图像表,其中存储图像 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/