2

运行选择查询时出现此错误,请告知。

Error No : 1111
Error : Invalid use of group function

询问:

SELECT cm.contactid, cm.firstname, cm.surname, cm.mobile, COUNT( * ) total
FROM sales_master as sm, contact_master as cm
WHERE sm.contactid = cm.contactid 
AND cm.mobile != '' AND orderdate>='2012-12-18' AND orderdate<='2013-03-18' 
GROUP BY sm.contactid 
HAVING COUNT(*) >= 1 
ORDER BY COUNT(*) DESC, cm.firstname ASC
4

2 回答 2

1

像这样更改您的查询。使用连接而不是笛卡尔。如果 cm.orderdate 的类型是 DAte,则从以下查询中删除 DATE()。并在 GROUP BY 和 ORDER BY 中使用别名 total 而不是 Count(*) 。

SELECT
  cm.contactid,
  cm.firstname,
  cm.surname,
  cm.mobile,
  COUNT(cm.contactid)    total
FROM sales_master as sm
  LEFT JOIN contact_master as cm
    ON sm.contactid = cm.contactid
WHERE 
    AND cm.mobile != ''
    AND DATE(cm.orderdate) >= '2012-12-18'
    AND DATE(cm.orderdate) <= '2013-03-18'
GROUP BY cm.contactid
HAVING total >= 1
ORDER BY total DESC, cm.firstname ASC
于 2013-03-18T06:49:46.270 回答
0

会有两个原因:

1)版本兼容性问题

2)您的查询语法不正确,我正在向您发送第二个选项的解决方案。对于版本兼容性问题,您必须转到某人评论中提到的链接。您必须为此使用子查询概念。

像这样修改您的查询:

SELECT  sm.contactid ,cm.contactid as contactid , cm.firstname as firstname, cm.surname as surname , cm.mobile as mobile , COUNT( * ) total
FROM    (
            SELECT  sm.contactid,contactid , firstname,surname ,mobile ,total
            FROM    sales_master as sm, contact_master as cm
            WHERE sm.contactid = cm.contactid 
            AND cm.mobile != '' AND orderdate>='2012-12-18' AND orderdate<='2013-03-18' 
            GROUP BY sm.contactid 
         ) q
GROUP BY sm.contactid HAVING COUNT(*) >= 1 
ORDER BY COUNT(*) DESC, cm.firstname ASC

我不确定我是否进行了确切的查询,但概念类似于“子查询”...

于 2013-03-18T06:08:23.163 回答