如何根据相对于时间的点赞数在 mysql 中排序 table?

How to order table in mysql by likes relative to their time?

我有一个简单的问题,2 个 mysql 表,一个放照片,另一个放点赞。结构是这样的:

table `photos` - id, name, image_id
table `likes` - id_photos, timestamp

现在按喜欢排序照片并获得 TOP 3 是微不足道的:

 SELECT photos.*
    , COUNT(likes.id) AS likes_count 
 FROM photos 
 LEFT JOIN likes ON photos.id = likes.id_photos 
 GROUP BY photos.id 
 ORDER BY likes_count DESC LIMIT 3;

但我想补充的是时间相关性,意思是,较新的喜欢有更多的“重量”,即使有些照片可能有更多的喜欢,但它们更旧,并且它们的顺序低于喜欢较少但较新的照片.

是否可以只在MySQL中解决这个问题?或者在 PHP ?

中进行额外处理

让我们考虑案例然后 likestimestamp 是 UNIXTIME 字段,所以如果我们使用 SUM(timestamp) 而不是计数,新的湖泊将有更多的权重:

SELECT photos.*
    , COUNT(likes.id) AS likes_count 
    , SUM(likes.timestamp) AS likes_weight 
 FROM photos 
 LEFT JOIN likes ON photos.id = likes.id_photos 
 GROUP BY photos.id 
 ORDER BY likes_weight DESC LIMIT 3;

可以使用一些系数(例如UNIX_TIMESTAMP())

SELECT photos.*
    , COUNT(likes.id) AS likes_count 
    , SUM(likes.timestamp)/UNIX_TIMESTAMP() AS likes_weight 
 FROM photos 
 LEFT JOIN likes ON photos.id = likes.id_photos 
 GROUP BY photos.id 
 ORDER BY likes_weight DESC LIMIT 3;