2014-10-08 89 views
0

我正在使用點燃的數據表。除了過濾器外,它工作正常。當我在它做搜索,我得到錯誤mysql |獲取數據庫錯誤,使用組函數無效

組功能

我得到錯誤的結果此查詢的無效使用。

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

只是一個方面說明:請注意,LIMIT爲您提供了25個隨機表單,因爲您不使用ORDER BY子句。 – 2014-10-08 10:51:23

+0

哦,醜。你不能以這種方式使用MIN(WHERE MIN()),雖然你可以使用HAVING isntead - 但你究竟在做什麼?你確定你正在使用區分大小寫的排序規則!?!? – Strawberry 2014-10-08 11:21:33

+0

@ThorstenKettner GROUP BY建立了一個隱含的(和一致的)命令 – Strawberry 2014-10-08 11:24:03

回答

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; 
+0

Thankyou先生的回覆,讓我檢查查詢中的更改以及查詢是否有效。 – 2014-10-08 14:16:35

+0

非常感謝先生。有用。 – 2014-10-08 14:38:54

相關問題