我需要为我的项目创建一个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语法...
答案 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)