请帮我解释为什么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)
答案 0 :(得分:2)
使用aggregate function之类的COUNT(),你需要对数据进行分组,如果你想将它用作条件,就不能使用WHERE,因为在聚合之前会考虑WHERE条件。改为使用GROUP BY和HAVING。 (另见http://dev.mysql.com/doc/refman/5.0/en/select.html)