MySQL按“每日关系”排序

时间:2012-08-24 23:26:33

标签: mysql sorting

我需要为我的项目创建一个mysql查询,这对我的范围来说太复杂了......

因此,我有一个包含id和timestamp列的图像表,以及元数据列

我还有一个“loves”表,其中包含id,imageid,userid和timestamp的列

(userid在这里并不重要)

目前,我正在使用LEFT JOIN按照喜欢的总数对图像进行排序

我现在想做的是,按照他们每天的平均喜好对图像进行排序。

因此,今天创建的图片中有5个与之相关的图片应该在5天前创建的图片之前显示,其中包含20个相关的图片。

甚至不确定如何开始接近这个,你们中的任何一个SQL专家有什么想法?欢呼声。

编辑:

使用此查询

SELECT images.*, 
COUNT(loves.id) AS num_loves 
FROM images 
JOIN loves ON (images.id = loves.imageid) 
GROUP BY images.id 
ORDER BY num_loves/DATEDIFF(images.timestamp,CURDATE()) 
DESC LIMIT 0 , 24

收到此错误

Reference 'num_loves' not supported (reference to group function)

仍然掌握MySQL语法...

1 个答案:

答案 0 :(得分:3)

您可以使用任何有效的表达式作为ORDER BY子句。这意味着我们只需要回忆一下代数的暗示:

SELECT 
  images.url,
  images.date_added
FROM IMAGES
JOIN image_likes ON image_likes.image_id = images.id
GROUP BY images.id
ORDER BY count(image_likes.id)/DATEDIFF(CURDATE(), images.date_added)