MySQL按大多数情况排序图像

时间:2013-03-30 21:11:47

标签: php mysql sorting

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

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

我需要并且不知道该怎么做才能运行SQL查询,该查询将按照查看次数最多的顺序返回一组图像。

我一直在这里和谷歌一起看,但只是不知道实际搜索的内容。

2 个答案:

答案 0 :(得分:3)

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,sum,min,max等)如何表现。在这种情况下,我们按图像分组并抓取每个图像的视图数。 COUNT只计算非空值,我们不想计算不存在的视图,因此我们要关闭views.view_id

如果你进行INNER JOIN而不是LEFT JOIN,它只会返回有视图的图像。 LEFT JOIN允许我们计数为零。

答案 1 :(得分:0)

您需要查看联接,将图像表连接到图像查看表,然后您可以跨两个表运行一个查询。