我有 2 个几乎相同的查询,一个带有 GROUP BY,一个没有。结果非常不同。GROUP BY 查询的结果是非 GROUP BY 查询结果的两倍多。
查询一:
SELECT table2.name, COUNT(DISTINCT(op.id))
FROM op INNER JOIN table1 ON table1.EID = op.ID
INNER JOIN table3 ON table3.id = table1.jobid
INNER JOIN table2 ON table2.id = table3.CatID
WHERE op.BID = 1
AND op.ActiveStartDate <= NOW()
AND op.ActiveEndDate >= NOW()
GROUP BY table2.name
ORDER BY COUNT(*) DESC;
查询 2:
SELECT op.Type, COUNT(DISTINCT op.id)
FROM op
WHERE op.BID = 1
AND op.ActiveStartDate <= NOW()
AND op.ActiveEndDate >= NOW()
ORDER BY op.Type ASC;
这些应该导致相同的结果。与他们一起玩时,一旦我从查询 1 中删除“GROUP BY”,结果是一样的。如果我将“GROUP BY”放回查询 1,结果会增加一倍以上。
编辑:似乎额外的 INNER JOINS 不会影响结果,而是查询 1 中的 GROUP BY。如果我删除查询 1 中的 GROUP BY,则 2 个查询之间的结果是相同的。如果我将 GROUP BY 添加回查询 1,结果将大不相同。