2016-07-05 26 views
0

任何人有一個想法,爲什麼我收到此錯誤信息:「無效使用組功能的」無組功能

Lookup Error - MySQL Database Error: Invalid use of group function

以下查詢?

select * from users u where u.CreationDate BETWEEN min(u.CreationDate) AND 
DATE_ADD(min(u.CreationDate), INTERVAL 1 YEAR) 

我必須在查詢中分組功能!

+1

它由於min函數「min(u.CreationDate)」 –

+0

您的查詢沒有意義。它應該做什麼? –

+1

「聚合可能不會出現在WHERE子句中,除非它位於包含在HAVING子句或選擇列表中的子查詢中,並且要聚合的列是外部引用」 – mcha

回答

2

您不能在where子句中使用聚合函數。你想要的是一個join和聚合,以獲得最低日期:

select * 
from users u cross join 
    (select min(CreationDate) as mincd 
     from users 
    ) uu 
where u.CreationDate BETWEEN uu.mincd AND DATE_ADD(uu.mincd, INTERVAL 1 YEAR); 
0

不能使用MIN裏面BETWEEN子句,但您可以:

select * from users u where u.CreationDate 
BETWEEN (SELECT min(u.CreationDate) FROM users) AND 
DATE_ADD((SELECT min(u.CreationDate) FROM users), INTERVAL 1 YEAR) 

如果這是一個過程,你可以將最小日期存儲在變量中,然後在查詢中使用它而不是多餘的調用。