首頁 > 資料庫 > mysql教程 > 連接具有多個行項目的表格時如何消除重複的訂單號碼?

連接具有多個行項目的表格時如何消除重複的訂單號碼?

Linda Hamilton
發布: 2025-01-17 06:21:09
原創
157 人瀏覽過

How to Eliminate Duplicate Order Numbers When Joining Tables with Multiple Line Items?

避免多行項目連線中出現重複的訂單號碼

涉及每個訂單包含多個行項目的表格的資料庫連接通常會導致結果中出現重複的訂單號碼。 本文探討了針對每個唯一訂單僅檢索一筆記錄的有效解決方案。

最初的方法及其缺點

一種簡單的方法可能涉及僅選擇「TOP 1」訂單項目。 但是,由於從內部 select 語句直接存取外部表的限制,此操作失敗。

高效解決方案:交叉應用

CROSS APPLY 運算子提供了一個優雅的解決方案:

<code class="language-sql">SELECT  Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
FROM    Orders
CROSS APPLY
        (
        SELECT  TOP 1 LineItems.Quantity, LineItems.Description
        FROM    LineItems
        WHERE   LineItems.OrderID = Orders.OrderID
        ) LineItems2</code>
登入後複製

CROSS APPLY 有效檢索每個訂單的第一個訂單項,防止重複的訂單號碼。

舊版 SQL Server 版本的替代方案:INNER JOIN

對於 2005 年之前的 SQL Server 版本,INNER JOIN 提供了類似的解決方案:

<code class="language-sql">SELECT   Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM     Orders
JOIN     LineItems
ON       LineItems.LineItemGUID =
         (
         SELECT  TOP 1 LineItemGUID 
         FROM    LineItems
         WHERE   OrderID = Orders.OrderID
         )</code>
登入後複製

確保確定性結果

至關重要的是,沒有 TOP 1 子句的 ORDER BY 是不確定的。 即使資料未更改,選定的行項目也可能在查詢執行之間有所不同。 始終在內部查詢中包含 ORDER BY 子句以確保結果一致。

以上是連接具有多個行項目的表格時如何消除重複的訂單號碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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