WHERE语句中的MySQL COUNT

时间:2012-06-04 17:03:24

标签: mysql count

请帮我解释为什么WHERE语句上的COUNT条件会出错,我该怎么办?

         SELECT jq.taskqueueid,jq.jobid
           FROM (SELECT p.taskID `curentTaskID`,
                    p.taskName `currentTaskName`,
                    p.processingType `currentProcessingType`,
                    p1.taskID `prevTaskID`,
                    p1.taskName `prevTaskName`,
                    p1.processingType `prevProcessingType`
                  FROM projecttask p
                  LEFT JOIN projecttask p1
                    ON p.sequenceNo=p1.nextTaskSequence
                   AND p.projectID=p1.projectID
                 WHERE p.taskID=18) task
           INNER JOIN taskslogs tl
              ON tl.taskID=task.`prevTaskID`
             AND tl.statusDefinitionID=1
           INNER JOIN jobqueue jq
              ON tl.taskqueueid=jq.taskqueueid
           WHERE COUNT(jq.taskqueueid)=COUNT(tl.taskqueueid)

1 个答案:

答案 0 :(得分:2)

使用aggregate function之类的COUNT(),你需要对数据进行分组,如果你想将它用作条件,就不能使用WHERE,因为在聚合之前会考虑WHERE条件。改为使用GROUP BY和HAVING。 (另见http://dev.mysql.com/doc/refman/5.0/en/select.html