在Sql Server 2008 中有效刪除頂部行
設想一種情況,您需要從頂部刪除特定數量的行SQL Server 中的一個表。雖然直覺的方法可能是使用與 TOP 子句配對的 DELETE 語句,但您可能會遇到所有行都被無意刪除的問題。要解決此難題,請考慮以下指導:
正如您所發現的,您嘗試執行的程式碼會導致刪除表中的所有行。這是因為程式碼包含兩個不同的語句:一個 DELETE 語句和一個有 TOP 子句的 SELECT 語句。 TOP 子句如果沒有指定 ORDER BY 子句,無法有效辨識要刪除的行。
為了確保選擇性刪除行,必須在 TOP 子句中建立排序標準。此外,建立公共表表達式 (CTE) 或類似的表表達式是刪除定義數量的頂行的高效方法。
以下程式碼片段舉例說明了更可靠的方法:
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
在此程式碼中,CTE 透過基於特定排序標準(在本例中為a1 列)選擇指定的行數,建立一個從原始表派生的單獨表。隨後,DELETE 語句從該臨時表中刪除一行,確保只刪除最上面的行。
以上是如何在SQL Server 2008中有效率地刪除特定數量的頂行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!