首頁 > 資料庫 > mysql教程 > 如何將 SQL 連線限制為僅相關表的第一行?

如何將 SQL 連線限制為僅相關表的第一行?

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

How to Limit SQL Joins to Only the First Row of a Related Table?

限制 SQL 連接到第一個相關行

在 SQL 中有效連接多個表至關重要,但有時我們只需要相關表中的第一行。本文示範如何將聯接限制為單行,從而在處理一對多關係時避免重複行。

讓我們來看一個常見的場景:

我們有兩個表,OrdersLineItems。 雖然大多數訂單只有一個訂單項,但有些訂單可能有多個訂單項目。 如果存在多個訂單項,標準 INNER JOIN 將導致訂單行重複。

為了防止這種情況,我們將連線限制為每個訂單僅第一個 LineItems 行。 這裡有兩個有效的方法:

使用 CROSS APPLY(SQL Server 2005 及更高版本):

這種方法提供了一個更乾淨、更容易閱讀的解決方案:

<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>
登入後複製

使用帶有子查詢的內連接(SQL Server 2005 之前版本):

對於較舊的 SQL Server 版本,此方法達到相同的結果:

<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 子句以指定所需的排序條件。

以上是如何將 SQL 連線限制為僅相關表的第一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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