mysql |获取数据库错误,无效使用组功能

时间:2014-10-08 10:38:02

标签: mysql sql

我正在使用点燃的数据表。除了过滤器,它工作正常。当我搜索它时,我得到错误

  

无效使用群组功能

我在错误结果中收到此查询。

SELECT `f`.`FormID`, `f`.`FormName`, `f`.`FormCIPath`, 
MIN(g.IsMenuLink) AS IsMenuLink, 
GROUP_CONCAT(DISTINCT g.GroupID ORDER BY g.GroupID) AS GroupIDs 
FROM (`sys_forms` f) INNER JOIN `sys_forms_in_groups` g ON `g`.`FormID` = `f`.`FormID` 
WHERE `g`.`GroupID` IN ('1', '1') AND (UPPER(f.FormName) LIKE '%DA%' OR 
UPPER(f.FormCIPath) LIKE '%DA%' OR UPPER(MIN(g.IsMenuLink)) LIKE '%DA%' ) 
GROUP BY `f`.`formID` LIMIT 25

查询有什么问题。??

1 个答案:

答案 0 :(得分:3)

问题是你在where子句中有聚合函数:

SELECT `f`.`FormID`, `f`.`FormName`, `f`.`FormCIPath`, MIN(g.IsMenuLink) AS IsMenuLink, 
       GROUP_CONCAT(DISTINCT g.GroupID ORDER BY g.GroupID) AS GroupIDs
FROM (`sys_forms` f) INNER JOIN
     `sys_forms_in_groups` g
     ON `g`.`FormID` = `f`.`FormID`
WHERE `g`.`GroupID` IN ('1', '1') AND
       (UPPER(f.FormName) LIKE '%DA%' OR
        UPPER(f.FormCIPath) LIKE '%DA%' OR
        UPPER(MIN(g.IsMenuLink)) LIKE '%DA%'
--------------^
       )
GROUP BY `f`.`formID`
LIMIT 25;

我可以简单地删除该功能:

WHERE `g`.`GroupID` IN ('1', '1') AND
       (UPPER(f.FormName) LIKE '%DA%' OR
        UPPER(f.FormCIPath) LIKE '%DA%' OR
        UPPER(g.IsMenuLink) LIKE '%DA%'
       )

或将其移至having条款。

SELECT `f`.`FormID`, `f`.`FormName`, `f`.`FormCIPath`, MIN(g.IsMenuLink) AS IsMenuLink, 
       GROUP_CONCAT(DISTINCT g.GroupID ORDER BY g.GroupID) AS GroupIDs
FROM (`sys_forms` f) INNER JOIN
     `sys_forms_in_groups` g
     ON `g`.`FormID` = `f`.`FormID`
WHERE `g`.`GroupID` IN ('1', '1') AND
       (UPPER(f.FormName) LIKE '%DA%' OR
        UPPER(f.FormCIPath) LIKE '%DA%'
       )
GROUP BY `f`.`formID`
HAVING UPPER(MIN(g.IsMenuLink)) LIKE '%DA%'
LIMIT 25;