我有 2 张桌子:photo
和like
. 我正在尝试根据一天中的喜欢数来获取热门照片。所以基本上像“今天流行”这样的东西。
SELECT
p.id AS id, COUNT(li.id) AS total_likes \
FROM `photo` p \
LEFT JOIN `like` li \
ON p.id = li.photo_id \
WHERE
li.date > DATE_SUB(CURDATE(), INTERVAL 1 DAY) \
GROUP BY \
p.id
当今天有足够数量的喜欢时,这很有效。但是如果过去一天没有点赞,它将不返回任何记录。
我也想稍微改变一下。可以制作等级吗?例如:
根据多天对照片进行排名:
1. Get photos based on how many likes today
2. Get photos based on how many likes for last week
and so on...
所以基本上它的作用是,假设我们需要获得 30 个项目。首先,它将尝试根据今天有多少喜欢来获取行。它可能是任何数字 20、15 等。然后它将获得总共需要达到 30 的剩余行,但现在将根据一周内的点赞数进行排序。
So something like:
SELECT FROM photo SORT BY likes today, likes in a week ...
谢谢你的帮助!