了解多个 LEFT JOIN 的不准确访问计数
提供的查询生成不正确的访问计数,因为多个 LEFT JOIN
操作的顺序性质会导致乘法而不是加法结果。
最初,加入 grocery
表可以正确计算每个用户的杂货访问量。但是,后续的 LEFT JOIN
和 fishmarket
会为每个用户创建多行,从而有效地将每个用户的杂货访问计数乘以鱼市场访问次数。 这解释了访问这两家商店的用户计数错误的“12”。
解决方案:通过子查询进行精确聚合
使用子查询独立聚合每个商店的访问计数解决了该问题:
<code class="language-sql">SELECT u.id, u.account_balance, (SELECT COUNT(*) FROM grocery WHERE user_id = u.id) AS "# of grocery visits", (SELECT COUNT(*) FROM fishmarket WHERE user_id = u.id) AS "# of fishmarket visits" FROM users u ORDER BY u.id;</code>
此修改后的查询准确地统计并显示每个用户的杂货店和鱼市访问量,提供正确的聚合数据。
以上是为什么多个 LEFT JOIN 会产生不正确的访问计数?的详细内容。更多信息请关注PHP中文网其他相关文章!