mysql |获取数据库错误,组函数使用无效
我使用的是点燃的数据表。除了过滤器外,它工作正常。当我在里面搜索时,我得到了一个错误 组函数的使用无效 我在错误的结果中得到这个查询mysql |获取数据库错误,组函数使用无效,mysql,sql,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 J
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
子句中有聚合函数:
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%'
)
或者将其移动到具有子句的
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;
问题在于,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%'
)
或者将其移动到具有
子句的
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;
问题在于,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%'
)
或者将其移动到具有
子句的
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;
问题在于,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%'
)
或者将其移动到具有
子句的
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;
请注意:请注意,LIMIT会给您提供25个随机表单,因为您不使用ORDERBY子句。哦,太难看了。您不能以这种方式使用MIN(其中MIN()),尽管您可以使用isntead,但您实际上想做什么?您确定您使用的是区分大小写的排序规则吗@ThorstenKettner GROUP BY建立了一个隐式的(一致的)order@Strawberry:好的,这是MySQL中的特殊功能。在标准SQL中,您总是需要ORDER BY来保证排序顺序。@ThorstenKettner我对其他方言不太熟悉,但它似乎也能起到同样的作用。。。请注意:请注意,LIMIT会给您提供25个随机表单,因为您不使用ORDERBY子句。哦,太难看了。您不能以这种方式使用MIN(其中MIN()),尽管您可以使用isntead,但您实际上想做什么?您确定您使用的是区分大小写的排序规则吗@ThorstenKettner GROUP BY建立了一个隐式的(一致的)order@Strawberry:好的,这是MySQL中的特殊功能。在标准SQL中,您总是需要ORDER BY来保证排序顺序。@ThorstenKettner我对其他方言不太熟悉,但它似乎也能起到同样的作用。。。请注意:请注意,LIMIT会给您提供25个随机表单,因为您不使用ORDERBY子句。哦,太难看了。您不能以这种方式使用MIN(其中MIN()),尽管您可以使用isntead,但您实际上想做什么?您确定您使用的是区分大小写的排序规则吗@ThorstenKettner GROUP BY建立了一个隐式的(一致的)order@Strawberry:好的,这是MySQL中的特殊功能。在标准SQL中,您总是需要ORDER BY来保证排序顺序。@ThorstenKettner我对其他方言不太熟悉,但它似乎也能起到同样的作用。。。请注意:请注意,LIMIT会给您提供25个随机表单,因为您不使用ORDERBY子句。哦,太难看了。您不能以这种方式使用MIN(其中MIN()),尽管您可以使用isntead,但您实际上想做什么?您确定您使用的是区分大小写的排序规则吗@ThorstenKettner GROUP BY建立了一个隐式的(一致的)order@Strawberry:好的,这是MySQL中的特殊功能。在标准SQL中,您总是需要ORDER BY来保证排序顺序。@ThorstenKettner我对其他方言不太熟悉,但它似乎也能起到同样的作用。。。谢谢先生的回复,让我检查一下查询中的变化以及您的查询是否有效谢谢先生的回复,让我检查一下查询中的变化以及您的查询是否有效谢谢先生的回复,让我检查一下查询中的变化以及您的查询是否有效谢谢先生的回复,让我检查一下查询中的更改以及您的查询是否有效。。