计算每个用户的最新日期

时间:2014-11-05 08:30:35

标签: php mysql

我有用户的表" article_likes" 以及他们是喜欢还是不喜欢这篇文章。每个喜欢/不喜欢日期时间会被保存,文章的 id 也会保存。 喜欢/不喜欢在"状态"中保存为bool。列。

id     article_id     user_id     like_date              status
1      8              2           2014-11-03 21:30:33    1
2      8              2           2014-11-03 21:31:00    0
3      8              3           2014-11-03 22:30:59    1
4      9              6           2014-11-03 22:36:25    1
5      9              2           2014-11-03 23:19:46    1

我喜欢得到一篇文章的数量。因此,只有最近日期的状态才有效。

所需的结果将是:

article_id     amount_likes
8              1
9              2

我希望得到每篇文章ID的结果,所以不是一次性的。

任何人都可以帮助我吗?谢谢!

3 个答案:

答案 0 :(得分:1)

这将解决您的问题:)

SELECT article_id, SUM(IF(status = 1, 1, -1)) AS amount_likes FROM article_likes
GROUP BY article_id

如果您将不喜欢存储为-1,则:

SELECT article_id, SUM(status) AS amount_likes FROM article_likes
GROUP BY article_id

答案 1 :(得分:0)

试试这个:

SELECT `article_id`,COUNT(`user_id`) AS amount_likes FROM `links`
WHERE `status`='1' GROUP BY DATE(`like_date`), `user_id`;

小提琴 - http://sqlfiddle.com/#!2/3b7bb6/4

希望有所帮助

答案 2 :(得分:0)

SELECT article_id, COUNT(IF(
                           SELECT CASE 
                                  WHEN status=1 THEN 'true' 
                                  ELSE 'false'
                                  END),
                                 'true','false'
                           )
                         )
FROM article_likes
GROUP BY article_id
ORDER BY article_id