我有一个表格,其中包含某些日期的条目:
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
,但这会使事情变得缓慢和复杂化。
还有其他办法吗?
答案 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)
我希望这会有所帮助。