-- 全數據查詢;
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);
*/