2011-08-15 52 views
0

我想優化許多MySQL語句,但遇到了問題。最小值,最大值,分組依據和DateDiff

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在分組之前應用於單個記錄。