首頁 > 資料庫 > mysql教程 > 如何有效率地檢索兩個表中未取消的預訂?

如何有效率地檢索兩個表中未取消的預訂?

Susan Sarandon
發布: 2025-01-23 19:53:21
原創
369 人瀏覽過

高效檢索未取消預訂的有效方法

本文探討如何從兩個表(預訂表和預訂日誌表)中高效檢索未取消的預訂資訊。預訂表儲存預訂詳情,預訂日誌表記錄預訂變更。

一種方法是先選取已取消的預訂,然後將其從結果中排除。但此方法需要額外連接預訂日誌表來取得已取消的預訂,效率較低。

更有效率的方案是使用子查詢中的NOT IN子句:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (select reservation_id
                 FROM reservation_log
                 WHERE change_type = 'cancel');</code>
登入後複製

此查詢檢索reservation表中id列不在子查詢結果中的所有行。子查詢選擇reservation_log表中change_type為'cancel'的reservation_id值。

另一個選擇是使用LEFT JOINWHERE子句:

<code class="language-sql">SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL;</code>
登入後複製

此查詢使用LEFT JOIN包含reservation表中的所有行,無論它們是否在reservation_log表中存在匹配行。 WHERE l.id IS NULL子句過濾掉在reservation_log表中存在change_type='cancel'的所有符合行的行,只留下未取消的預訂。

How to Efficiently Retrieve Uncancelled Reservations from Two Tables?

以上是如何有效率地檢索兩個表中未取消的預訂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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