我正在尝试编写一个查询来获取数据库中记录的计数,这些记录发生在表中的特定日期。我的查询如下:
SELECT
count(id),
A.status,
YEAR(A.dateRequested),
MONTHNAME(A.dateRequested),
WEEK(A.dateRequested),
DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending';
它给我的只是一条记录:
50 Pending 2013 April 16 Monday
为什么它没有给我列出所有记录。对于例如我周一插入了50条记录,星期二有20条记录等等。我怎样才能得到这样的清单?为什么函数WEEK(A.dateRequested)返回16
,因为一个月有4周?
答案 0 :(得分:2)
您使用的count(id)
没有group by
。 MySQL的工作方式是将其转换为空group by
。您将获得整个表的count(id)
,其他字段将设置为一个随机行。
按工作日列出待处理记录的数量:
SELECT DAYNAME(A.dateRequested)
, count(id),
FROM ASSESSMENT A
where A.status = 'Pending'
group by
DAYNAME(A.dateRequested)
答案 1 :(得分:0)
您的查询不是查询今天发生的事情。它正在寻找具有待处理状态的物品。将其更改为:
WHERE A.dateRequested ='2013-06-20'
您正在使用COUNT函数,除非您使用GROUP BY,否则只返回一个结果。
答案 2 :(得分:0)
试试这个: -
SELECT
count(id),
A.status,
YEAR(A.dateRequested),
MONTHNAME(A.dateRequested),
WEEK(A.dateRequested),
DAYNAME(A.dateRequested)
FROM ASSESSMENT A where A.status = 'Pending'
GROUP BY A.status,
YEAR(A.dateRequested),
MONTHNAME(A.dateRequested),
WEEK(A.dateRequested),
DAYNAME(A.dateRequested)