SELECT DISTINCT(toda) toda, count(DISTINCT toda) as numusers
FROM tbl_complains WHERE YEAR(dates)= YEAR(NOW())
GROUP BY toda ORDER BY toda
我试图只得到今年的数据,但我的“where子句”似乎有问题。但当我在where子句中输入特定年份时,它就起作用了。除了where子句之外,所有的东西都在工作。
我希望你们能帮我。
在一个领域的什么地方计算一些东西是一个非常糟糕的主意。MySQL必须在每一行上计算该值,以查看是否使用该行作为结果。这提供了一个完整的表扫描,并且可能会很慢
更好地使用
SELECT DISTINCT(toda) toda, count(DISTINCT toda) as numusers
FROM tbl_complains
WHERE dates BETWEEN DATE_FORMAT(NOW() ,'%Y-01-01')
AND DATE_FORMAT(NOW() ,'%Y-12-31'))
GROUP BY toda ORDER BY toda;
所以MySQL只能计算一次日期,如果有索引,也可以使用索引