MySQL:获取某个日期和整体记录的COUNT

时间:2014-03-27 09:01:03

标签: mysql sql

我有一个表格,其中包含某些日期的条目:

id |  word  | date
1  |  word1 | 2014-03-27 (today)
2  |  word2 | 2014-03-27 (today)
3  |  word1 | 2012-01-21
3  |  word1 | 2011-04-14

在上表word1中总共出现了3次,但今天只有一次。我想要的是创建一个查询,向我显示今天的每个单词的计数和一般情况。我能想到的唯一方法是在查询中使用另一个SELECT,但这会使事情变得缓慢和复杂化。

还有其他办法吗?

2 个答案:

答案 0 :(得分:3)

您可以在没有子查询的情况下执行此操作:

SELECT 
  COUNT(word) AS all_count, 
  COUNT(IF(`date`=CURDATE(), word, NULL)) AS today_count 
FROM 
  t 
WHERE 
  word='word1'

答案 1 :(得分:1)

另一个想法......

    SELECT general.word, general.n_general, n_today
    FROM (
           (SELECT word, count(*) n_today FROM t 
            WHERE t.date>=CURDATE() GROUP BY t.word) today
    INNER JOIN
           (SELECT word, count(*) n_general FROM t 
            GROUP BY t.word) general
    ON today.word=general.word)

我希望这会有所帮助。