[研究]在 SQL Server 中刪除欄位內容相同的記錄,只留日期最新的一筆
2024-01-22
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
TSQL, SQL Server, Table1 的 FieldA 欄位內容可能重複,另有 datetimeA 欄位紀錄該筆建立日期時間,現在 FieldA 欄位內容相同的,只留下一筆,留下日期最新的一筆
ChatGPT
如果你想在 SQL Server 中删除 Table1 中 FieldA 欄位內容相同的记录,只保留日期最新的一条记录,你可以使用 ROW_NUMBER() 函数和 PARTITION BY 子句来标记并删除重复记录。以下是一个示例 T-SQL 查询:
WITH CTE AS ( SELECT FieldA, datetimeA, ROW_NUMBER() OVER (PARTITION BY FieldA ORDER BY datetimeA DESC) AS RowNum FROM Table1 ) DELETE FROM CTE WHERE RowNum > 1; |
這個查詢使用 ROW_NUMBER() 函數按 datetimeA 欄位降序排序,同時使用 PARTITION BY 子句分組每個 FieldA 的相同值。接著,CTE (Common Table Expression) 中的 RowNum 列將為每個分組賦予排名。
最後,使用 DELETE 語句刪除 RowNum 大於 1 的記錄,這樣就只保留了每個 FieldA 分組中日期最新的一條記錄。請確保在執行任何刪除語句之前,在生產環境中進行測試,以避免意外的數據丟失。
(完)
相關
沒有留言:
張貼留言