我需要对一个相当大的查询执行 COUNT,其中一个连接的表具有一对多的关系。这是抛弃我的结果,因为所有数据都乘以一个项目在一对多表的“多”侧重复的次数。
这是查询的缩短版本,仅显示突出问题的相关部分:
SELECT COUNT(trimtype) FROM versiontrim
INNER JOIN trims USING (trim_id)
INNER JOIN prices USING(version_id)
INNER JOIN m_versions USING(version_id)
WHERE trimtype IN('sec', 'help') AND price BETWEEN 200001 AND 210000
GROUP BY version_id
除了具有一对多关系的 m_versions 之外,所有表都非常简单,如下所示:
version_id serv_id
1 1
1 2
1 3
1 4
1 5
.... and so on
查询的预期结果是:
version_id COUNT(trimtype)
44 9
54 7
69 9
214 10
216 6
282 1
290 10
相反,我得到了这个,即所有计数乘以 5,这是在 m_versions 表中重复 version_id 的次数:
version_id COUNT(trimtype)
44 45
54 35
69 45
214 50
216 30
282 5
290 50
如何避免这种行为?谢谢