首頁 > 資料庫 > mysql教程 > 為什麼我的左外連接只傳回左表的部分資料?

為什麼我的左外連接只傳回左表的部分資料?

Susan Sarandon
發布: 2025-01-23 16:08:10
原創
382 人瀏覽過

Why Does My Left Outer Join Only Return Partial Data From the Left Table?

左外連接和左表中的不完整數據

了解連接條件如何影響左外連接的結果至關重要。 條件放置不正確可能會導致左表中的資料不完整。

讓我們檢查一下這個查詢:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days;</code>
登入後複製

此查詢旨在計算每日頁面開啟次數。 但是,即使 day 表有更多天,它可能只顯示幾天。 問題出在WHERE子句上。

連接條件ON day.days = DAY(FROM_UNIXTIME(open_date))正確符合天數。 但是,WHERE tracking.open_id = 10 連接之後過濾 ,刪除 open_id = 10 表中沒有 tracking 的任何日期。

要包含左表() 中的所有day 天,無論tracking 中的符合項目為何,請將open_id 條件移至ON 子句中:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10
GROUP BY day.days;</code>
登入後複製

此更正後的查詢可確保包含所有日期,提供完整的每日頁面開啟計數,即使某些日子在 tracking 表中缺少帶有 open_id = 10 的條目。 這些天的 COUNT(*) 將返回 0。

以上是為什麼我的左外連接只傳回左表的部分資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板