首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 刪除重複記錄:保留最小 ID 的實作範例

     編輯:MySQL 資料庫相關知識

在資料庫操作中,刪除重複資料是常見需求。本文示範如何使用 SQL 刪除重複記錄,並保留每組重複資料中 AutoID 最小的一筆。

建立測試資料表

首先建立一個名為 t0807 的測試表,包含自動遞增主鍵 AutoID、id 與 username 欄位:

IF OBJECT_ID('t0807') IS NOT NULL
    DROP TABLE t0807
GO

CREATE TABLE t0807 (
    AutoID INT IDENTITY(1,1) PRIMARY KEY,
    [id] INT,
    username VARCHAR(10)
)
GO

插入測試資料

插入包含重複 username 的測試資料:

INSERT INTO t0807
SELECT 1,'1' UNION ALL
SELECT 4,'1' UNION ALL
SELECT 4,'2' UNION ALL
SELECT 6,'2' UNION ALL
SELECT 2,'3' UNION ALL
SELECT 7,'3'
GO

刪除重複邏輯

核心邏輯:找出每個 username 群組中 id 最小值對應的 AutoID,刪除不在這些 AutoID 清單中的記錄。

DELETE FROM t0807
WHERE AutoID NOT IN (
    SELECT AutoID FROM t0807 a
    WHERE [id] <= (
        SELECT MIN([id]) FROM t0807 b WHERE a.username = b.username
    )
)
GO

執行結果

執行後剩下 3 筆資料,每個 username 保留 id 最小的那一筆:

AutoID  id  username
1       1   1
3       4   2
5       2   3

此方法適用於 SQL Server,透過子查詢精確定位需保留的記錄,避免誤刪。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved