Mysql,刪除重複項,只保留一條資料。

2021-10-06 04:01:49 字數 1580 閱讀 1477

在本次面試中,面試官提出了乙個sql刪除的語句:一張表中,主鍵id,name 等字段。其中,name含有多條重複資料。現在,對這些重複的name資料只保留一條,其餘的刪除。

以下是具體的講解,希望能夠幫到大家。

1、表結構如下:

create table moon_user (

id int(11) not null auto_increment comment '主鍵, id值',

name varchar(255) default null comment '姓名',

primary key (id)

) engine=innodb auto_increment=6 default charset=utf8 comment='使用者表,用於測試.';

插入一些測試資料:

insert into moon_user (id, name) values ('1', '張三年');

insert into moon_user (id, name) values ('2', '李四');

insert into moon_user (id, name) values ('3', '張三');

insert into moon_user (id, name) values ('4', '李四');

insert into moon_user (id, name) values ('5', '張三');

insert into moon_user (id, name) values ('7', '李二狗');

insert into moon_user (id, name) values ('8', '張三');

insert into moon_user (id, name) values ('9', '王大錘');

insert into moon_user (id, name) values ('10', '劉江');

insert into moon_user (id, name) values ('12', '趙武');

insert into moon_user (id, name) values ('13', '張三年');

insert into moon_user (id, name) values ('14', '楊峰');

2、具體的sql語句如下,注意由於使用的是mysql資料庫,在子查詢中需要使用臨時表 tab_a, 不然會報錯。oracle資料庫中,據說是可以不使用臨時表,我明天到oracle資料庫中寫一些sql語句測試一下,哈哈。(^_^)

delete from moon_user

where id not in (

select tab_a.id

from (

select min(id) as id

from moon_user

group by name

) tab_a

);

參考文章:  mysql 中 you can't specify target table '表名' for update in from clause錯誤解決辦法

Mysql,刪除重複項,只保留一條資料。

在本次面試中,面試官提出了乙個sql刪除的語句 一張表中,主鍵id,name 等字段。其中,name含有多條重複資料。現在,對這些重複的name資料只保留一條,其餘的刪除。以下是具體的講解,希望能夠幫到大家。1 表結構如下 create table moon user id int 11 not n...

SQL刪除重複的記錄 只保留一條

首先新建表 建立示例表 create tablet id intidentity 1,1 primary key,a varchar 10 b varchar 10 插入資料 insert into t select aa bb union allselect a1 bgb union allsel...

mysql刪除單列重複資料並保留一條

自己剛好有這種需求,又不是很熟悉sql果斷去查一下 mysql mysql刪除重覆記錄並且只保留一條.自己動手測試一下,順帶說一下mysql workbench,懶得去找xx破解的話還是可以的,感覺夠用了。create table ta test2 idnew table varchar 45 no...