當嘗試從表中刪除前1000 行時,開發人員經常會遇到意外的情況行為。他們的程式碼(例如問題陳述中提供的程式碼)最終會刪除整個表而不是其預期目標。
問題在於範例程式碼將 DELETE 語句與 SELECT 語句結合在一起。 DELETE 語句執行前 1000 行,有效刪除表中的所有內容。為了修正這個問題,我們需要為 TOP 函數定義特定的排序標準。
刪除前 1000 行的更有效方法是利用公共表表達式 (CTE) 或類似的表表達式。這使我們能夠指定CTE 內的排序標準,如提供的答案代碼所示:
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
透過使用此技術,我們確保只有前1000 行按列「a1」排序這種情況下,是有針對性的刪除。這種方法保證了預期的結果,而不存在意外刪除整個表的風險。
以上是如何安全地從 SQL Server 表中刪除前 N 行而不刪除所有內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!