在 sql 中刪除重復(fù)數(shù)據(jù)可通過(guò)以下方法:使用 distinct 關(guān)鍵字從查詢結(jié)果中移除重復(fù)值。使用 distinct 關(guān)鍵字與 delete 語(yǔ)句一起從表中刪除重復(fù)行。
SQL 中刪除重復(fù)數(shù)據(jù)
在 SQL 中刪除重復(fù)數(shù)據(jù)的主要方法是使用 DISTINCT 和 DELETE 語(yǔ)句。
DISTINCT
DISTINCT 關(guān)鍵字用于從查詢結(jié)果中移除重復(fù)值。它可以與 SELECT 語(yǔ)句一起使用,如下所示:
SELECT DISTINCT column_name1, column_name2 FROM table_name;
登錄后復(fù)制
這將返回一個(gè)查詢結(jié)果,其中 column_name1 和 column_name2 的組合是唯一的。
DELETE
DELETE 語(yǔ)句用于從表中刪除數(shù)據(jù)。要?jiǎng)h除重復(fù)數(shù)據(jù),可以使用 DISTINCT 關(guān)鍵字與 DELETE 語(yǔ)句一起使用,如下所示:
DELETE FROM table_name WHERE (column_name1, column_name2) IN ( SELECT DISTINCT column_name1, column_name2 FROM table_name );
登錄后復(fù)制
這將刪除表中所有與 DISTINCT 查詢返回的結(jié)果匹配的重復(fù)行。
示例
假設(shè)有以下表:
create table my_table (
id int not null auto_increment primary key,
name varchar(255) not null,
email varchar(255) not null
);
insert into my_table (name, email) values ('John Doe', '[email protected]');
insert into my_table (name, email) values ('John Doe', '[email protected]');
insert into my_table (name, email) values ('Jane Smith', '[email protected]');
insert into my_table (name, email) values ('Jane Smith', '[email protected]');
登錄后復(fù)制
要?jiǎng)h除表中重復(fù)的 name 和 email 組合:
DELETE FROM my_table WHERE (name, email) IN ( SELECT DISTINCT name, email FROM my_table );
登錄后復(fù)制
這將刪除兩個(gè) John Doe 行,留下以下結(jié)果:
select * from my_table; | id | name | email | | --- | --- | --- | | 1 | John Doe | [email protected] | | 3 | Jane Smith | [email protected] |
登錄后復(fù)制






