在 SQL 連線中僅選擇相關表格中的第一行
資料庫連線通常會從相關表中檢索多個符合的行。 本文解決了即使存在多個符合項,您也需要將聯結限制為每個父記錄的單行的情況。 這可以防止查詢輸出中出現重複結果。
挑戰
考慮兩個表:Orders
和 LineItems
。 通常,一份訂單有一個行項目,但有些訂單可能有多個行項目。 顯示訂單詳細資訊時,每個訂單僅顯示一個訂單項目至關重要,否則會導致結果重複混亂。
最初的方法(及其失敗)
在聯結中使用 TOP 1
的天真嘗試會直接失敗,因為內部查詢無法存取外部表的列(如 OrderID
)。
解:交叉應用與內部連結
最有效的方法是使用 CROSS APPLY
(在 SQL Server 2005 及更高版本中可用)或針對舊版本的巧妙 INNER JOIN
。
使用 CROSS APPLY(SQL Server 2005 及更高版本)
CROSS APPLY
為外表中的每一行產生一個行集,從而啟用相關子查詢。 然後,該子查詢從相關表中過濾並選擇一行。
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
使用 INNER JOIN(SQL Server 2005 之前版本)
對於缺少 CROSS APPLY
的較舊 SQL Server 版本,帶有子查詢的 INNER JOIN
可得到相同的結果:
SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description FROM Orders INNER JOIN LineItems ON LineItems.LineItemGUID = ( SELECT TOP 1 LineItemGUID FROM LineItems WHERE OrderID = Orders.OrderID )
關於決定論的重要說明:
如果沒有 TOP 1
子句,ORDER BY
子句本質上是不確定的。 為了確保結果一致(即始終選擇 相同「第一個」行項目),請在內部查詢中加入 ORDER BY
子句(例如 ORDER BY LineItems.SomeColumn
)。 這確保了訂單項目的可預測選擇。
以上是如何在 SQL 中高效地僅連接到相關表的第一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文介紹了MySQL的“無法打開共享庫”錯誤。 該問題源於MySQL無法找到必要的共享庫(.SO/.DLL文件)。解決方案涉及通過系統軟件包M驗證庫安裝

本文探討了Docker中的優化MySQL內存使用量。 它討論了監視技術(Docker統計,性能架構,外部工具)和配置策略。 其中包括Docker內存限制,交換和cgroups

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

本文比較使用/不使用PhpMyAdmin的Podman容器直接在Linux上安裝MySQL。 它詳細介紹了每種方法的安裝步驟,強調了Podman在孤立,可移植性和可重複性方面的優勢,還

本文提供了SQLite的全面概述,SQLite是一個獨立的,無服務器的關係數據庫。 它詳細介紹了SQLite的優勢(簡單,可移植性,易用性)和缺點(並發限制,可伸縮性挑戰)。 c

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

本指南展示了使用自製在MacOS上安裝和管理多個MySQL版本。 它強調使用自製裝置隔離安裝,以防止衝突。 本文詳細詳細介紹了安裝,起始/停止服務和最佳PRA

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

禪工作室 13.0.1
強大的PHP整合開發環境