顶部像图片 - mysql查询

时间:2015-09-25 07:50:37

标签: mysql

我有一个名人图片网站,所以在这个网站上用户可以喜欢这些图片。

我想展示今天最喜欢的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

2 个答案:

答案 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)

您应该使用posts.id和likes.post列编写一个SELECT查询JOINs两个表。您可以使用GROUP BY确保每张图片仅显示一次,COUNT是检查每张图片中有多少图片的关键。 ORDER BY可帮助您找到排名最高的图片,WHERE将您的范围限制为特定日期或日期。使用LIMIT限制结果集大小。