在本次面試中,面試官提出了乙個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...