我正在尝试将许多MySQL语句优化为一个,但遇到了一个问题。
MySQL查询:
SELECT companyid, COUNT(*) AS total
FROM timesheet
WHERE userId='1'
AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77
GROUP BY companyid
HAVING total = 11
我要做的是选择所有存在11条记录的公司,并在11周内创建第一条和最后一条记录。我得到的错误是“无效使用组功能”。
这与MIN(), MAX()
和DATEDIFF()
部分有关,但我不能为我的生活弄明白这一点!
答案 0 :(得分:2)
聚合函数需要在HAVING子句中,而不是WHERE子句。 (例如你的DATEDIFF(MIN(startDate), MAX(endDate)) <= 77
条件)
将HAVING视为应用于分组记录,并将WHERE应用于各个记录,然后再进行分组。