SQL_刪除重複項數據

-- 全數據查詢;
SELECT * FROM TLADDING;

-- 查詢數據表中數據的總條數;
SELECT COUNT(*) FROM TLADDING;

-- 刪除重複項數據的同時保留其中一項作爲單一數據;
DELETE FROM [TLADDING] 

        /**
            * 確定刪除的數據條件;
            * 
            * 如果刪除SQL中只添加確定刪除數據條件,在沒有重複數據的前提下;不會刪除數據;
            * 如果刪除SQL中只添加確定刪除數據條件,在有重複數據的前提下;會刪除所有重複的數據;
            * 綜上所屬:
            *         如果要刪除所有重複數據,可以僅保留確定刪除數據條件進行刪除;
            *            如果要在刪除重複數據的前提下保留其中一項重複項作爲單一數據,則需要添加下面的不刪除條件;
            */
        WHERE [KEYS] IN ( 
                SELECT [KEYS] FROM [TLADDING] GROUP BY [KEYS] HAVING COUNT([KEYS]) > 1 
        )
        
        -- 添加不刪除的數據條件;
        AND INDEXS NOT IN ( 
                SELECT MIN(INDEXS) FROM [TLADDING] GROUP BY [KEYS] HAVING COUNT([KEYS]) > 1 
        )
/**
    * 保留重複數據行既定列中最小值數據的同時;刪除數據表中除既定列最小值以外的其他重複的數據;
    * 既定列指此表中的INDEXS列;
    * 其作用是記錄重複數據的編號以區分重複數列的行號大小;
    *
    * 以下給出測試表的創建SQL:
    -- SQL CreateTable
            CREATE TABLE [dbo].[Untitled] (
                    [KEYS] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
                    [KVALUE] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
                    [INDEXS] int  NULL
            )  
            ON [PRIMARY]
            GO

            ALTER TABLE [dbo].[Untitled] SET (LOCK_ESCALATION = TABLE)
    
    * 以下給出測試表的測試數據創建SQL:
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('001','AAAAAAAAAAAAAAAAAA',1);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('001','AAAAAAAAAAAAAAAAAA',2);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('001','AAAAAAAAAAAAAAAAAA',3);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('002','BBBBBBBBBBBBBBBBBB',4);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('002','BBBBBBBBBBBBBBBBBB',5);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('002','BBBBBBBBBBBBBBBBBB',6);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('003','CCCCCCCCCCCCCCCCCC',7);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('003','CCCCCCCCCCCCCCCCCC',8);
            INSERT INTO TLADDING (KEYS,KVALUE,INDEXS) VALUES ('003','CCCCCCCCCCCCCCCCCC',9);

    */

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章