在SQL中,如果你想要?jiǎng)h除重復(fù)的記錄,但只保留其中一條,你可以使用以下方法:
DELETE
和JOIN
語(yǔ)句:假設(shè)你有一個(gè)名為my_table
的表,其中有id
(主鍵)、column1
和column2
列,你想要?jiǎng)h除重復(fù)的column1
和column2
組合,但只保留每組的第一條記錄。你可以使用以下查詢:
DELETE t1 FROM my_table t1
JOIN my_table t2
ON t1.column1 = t2.column1 AND t1.column2 = t2.column2 AND t1.id > t2.id;
這個(gè)查詢會(huì)刪除所有重復(fù)的記錄,但只保留每組的第一條記錄。
ROW_NUMBER()
窗口函數(shù):你還可以使用ROW_NUMBER()
窗口函數(shù)來實(shí)現(xiàn)這個(gè)目標(biāo)。假設(shè)你的表名為my_table
,你想要?jiǎng)h除重復(fù)的column1
和column2
組合,但只保留每組的第一條記錄。你可以使用以下查詢:
WITH ranked_table AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY id) AS row_num
FROM my_table
)
DELETE FROM ranked_table
WHERE row_num > 1;
這個(gè)查詢首先使用ROW_NUMBER()
函數(shù)為每組重復(fù)的記錄分配一個(gè)行號(hào),然后刪除所有行號(hào)大于1的記錄,從而只保留每組的第一條記錄。