奇怪的Mysql错误1111,据说以前工作过

时间:2010-10-19 14:49:43

标签: mysql mysql-error-1111

我正在尝试解决在VOIP平台上运行的PHP应用程序生成的特定“报告”(与计费相关)。要求我这样做的人说“它之前有效”;)

抛出MySQL错误: 1111: Invalid use of group function

疯狂的事情是,它'先于'工作'但在一段时间后停止,他们无法发生可能造成此错误的事件。有人认为MYSQL可能升级了吗?我用Google搜索了错误,似乎无法找到明确的答案。

乍一看,你们在SQL中看到了什么问题吗?

SELECT C.ResourceGroupID AS CustomerID, CS.CustomerName, SUM(C.IN_RndDuration/60) AS Minutes, SUM(CASE WHEN (C.OUT_Duration>0 AND C.IN_RndDuration>0) THEN 1 ELSE 0 END) AS Successfull, count(0) AS Attempts     
FROM ws_call_current AS C 
LEFT JOIN customer_rg AS V_RG ON 
V_RG.RGId=C.OtherResourceGroupID AND V_RG.RateTableId IS NOT NULL AND V_RG.Direction='O'
LEFT JOIN customer AS V ON V.CustomerId=V_RG.CustomerId 
LEFT JOIN customer_rg AS CS_RG ON CS_RG.RGId=C.ResourceGroupID AND CS_RG.RateTableId IS NOT NULL AND CS_RG.Direction='I'     
LEFT JOIN customer AS CS ON CS.CustomerId=CS_RG.CustomerId     
WHERE DATE_FORMAT(DATE_ADD(C.SeizeDate, INTERVAL TIME_TO_SEC(C.SeizeTime) SECOND), '%Y-%m-%d %H:%i:00') BETWEEN '2010-10-19 00:00:00' AND '2010-10-19 23:59:59'      
AND C.SeizeDate BETWEEN '2010-10-19' AND '2010-10-19'      
GROUP BY CS.CustomerName     
ORDER BY SUM(C.IN_RndDuration/60) DESC

这是为MYSQL写的3/4我相信,还不确定。只是想得到一些反馈。 从谷歌搜索结果中我发现有些人通过将查询修改为Having而不是where来修复此问题是否成功?

不确定。下面看起来有点奇怪吗?

2 个答案:

答案 0 :(得分:0)

尝试在C.ResourceGroupID声明中加入group by。您需要在组中的选择中包含所有非聚合项目。

上面的代码中不需要having

我不确定它之前是如何起作用的......

答案 1 :(得分:0)

我在审核后发现,其原因仅仅是MySQL的差异。最初,MySQL代码是为5.0.51a编写的,运行的MySQL版本(以某种方式'尝试'升级,为5.0.21)。

此版本的“降级”是导致SQL失败的原因。老实说我不知道​​原因是什么,除了我们安装新版本的MySQL只是做一个测试(在远程盒子上)它解决了问题(从主盒指向备份MySQL服务器。

此错误的解决方案:版本兼容性