我有一个名人图片网站,所以在这个网站上用户可以喜欢这些图片。
我想展示今天最喜欢的10张照片!
表格帖子:
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`foto` varchar(200) NOT NULL,
`data` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
foto是我发布此图片的图片网址和数据。
并喜欢:
CREATE TABLE IF NOT EXISTS `likes` (
`ip` varchar(40) NOT NULL,
`post` int(11) UNSIGNED NOT NULL,
FOREIGN KEY (`post`) REFERENCES posts (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
ip是喜欢图片的用户,帖子是帖子表的ID。
我想得到今天最喜欢的帖子。可能吗?到目前为止,我已经尝试过:
SELECT COUNT(likes) AS rank FROM likes
答案 0 :(得分:1)
您必须在dt
表格中添加likes
列(数据类型应该是日期或日期时间),并在此列中保存照片喜欢的时间,然后使用此查询获取今天的喜欢
SELECT p.id, count(*) as cnt
FROM posts p INNER JOIN likes l ON p.id=l.post
WHERE date(l.dt) = current_date()
GROUP BY 1
ORDER BY 2 DESC
此查询将返回今天的每个帖子的计数cnt
及其id
。排序为帖子,最喜欢顶部
答案 1 :(得分:0)