-- 原始表
create table ttd(
id varchar(30) not null,
name varchar(30) not null,
type int
);
insert into ttd(id, name, type) values ('a', 'na1', 1), ('b', 'nb1', 3), ('a', 'na1', 4), ('c', 'nc1', 1);
select * from ttd;
-- 臨時表1
create table tmp1(
s serial, -- 自增
id varchar(30) not null,
name varchar(30) not null,
type int
);
-- 將原始表數據插入到臨時表1
insert into tmp1 (id, name, type) (select id, name, type from ttd);
-- 創建臨時表2, 插入去重的數據
create table tmp2 as (
-- 因爲 id 都是相同的, 就取 tmp1 自增最大的那個至, 去除相同的 id
select t1.id, t1.name, t1.type from tmp1 as t1
right join (
select max(s) as ms, id from tmp1 group by id
) as t2 on t1.id=t2.id and t1.s=t2.ms
);
-- 刪除原始表
drop table ttd;
-- 創建新的表
create table ttd(
id varchar(30) not null,
name varchar(30) not null,
type int,
primary key(id) -- 加入主鍵
);
-- 將去重後的 tmp2 數據寫入到 新加的 ttd 表中
insert into ttd(id, name, type) (select * from tmp2);
-- 刪除臨時表
drop table tmp1;
drop table tmp2;
select * from ttd;
学习是最好的投资!