MySQL无效使用组功能

时间:2013-12-06 08:22:12

标签: mysql sql

我在尝试在MySQL中构建查询时得到Error Code: 1111. Invalid use of group function。显然MySQL不支持WITH,这是我更习惯使用的。

SELECT DISTINCT `UserID`
FROM `user`
INNER JOIN `message`
    ON `user`.`Message` = `message`.`Recipient`
WHERE MAX(`TotalSize`) IN (
                SELECT SUM(`message`.`Size`) as `TotalSize`
                FROM `message`
                INNER JOIN `category`
                    ON `message`.`CatID` = `category`.`CatID`
                WHERE `category`.`CatName` = 'Inbox'
                GROUP BY `Recipient`);

2 个答案:

答案 0 :(得分:2)

SELECT `UserID`, MAX(SUM(message.Size)) as TotalSize
FROM `user`
INNER JOIN `message`
    ON `user`.`Message` = `message`.`Recipient`
INNER JOIN category
    ON message.CatID = category.CatID
WHERE category.CatName = 'Inbox'
GROUP BY UserID

答案 1 :(得分:1)

您需要使用HAVING子句而不是WHERE MAX( TotalSize )

SELECT DISTINCT `UserID`
FROM `user`
INNER JOIN `message`
    ON `user`.`Message` = `message`.`Recipient`
GROUP BY `UserID`
HAVING MAX(`message`.`Size`) IN (
                SELECT SUM(`message`.`Size`) as `TotalSize`
                FROM `message`
                INNER JOIN `category`
                    ON `message`.`CatID` = `category`.`CatID`
                WHERE `category`.`CatName` = 'Inbox'
                GROUP BY `Recipient`);

在WHERE子句中无法访问组函数,HAVING可以过滤聚合。