0

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

所以,我有一个带有 id 和时间戳列的图像表,以及元数据列

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

(用户 ID 在这里并不重要)

目前,我正在使用 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 语法...

4

1 回答 1

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)
于 2012-08-24T23:50:42.803 回答