我正在使用点燃的数据表。除了过滤器,它工作正常。当我搜索它时,我得到错误
无效使用群组功能
我在错误结果中收到此查询。
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
查询有什么问题。??
答案 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;