首頁 >資料庫 >mysql教程 >為什麼多個 LEFT JOIN 會產生不正確的存取計數?

為什麼多個 LEFT JOIN 會產生不正確的存取計數?

Barbara Streisand
Barbara Streisand原創
2025-01-23 12:19:10683瀏覽

Why are Multiple LEFT JOINs Producing Incorrect Visit Counts?

了解多個 LEFT JOIN 的不準確存取計數

提供的查詢產生不正確的存取計數,因為多個 LEFT JOIN 運算的順序性質會導致乘法而不是加法結果。

最初,加入 grocery 表可以正確計算每個使用者的雜貨訪問量。但是,後續的 LEFT JOINfishmarket 會為每個用戶建立多行,從而有效地將每個用戶的雜貨訪問計數乘以魚市場訪問次數。 這解釋了訪問這兩家商店的用戶計數錯誤的“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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn