17,377
社区成员
发帖
与我相关
我的任务
分享
delete from t t1
where exists (select 1
from t t2
where t2.code = t1.code
and t2.id > t1.id)
-- 删除重复的记录
CREATE TABLE T143
(
ID NUMBER(4),
NAME VARCHAR2(20)
);
INSERT INTO T143 VALUES(100, 'AA');
INSERT INTO T143 VALUES(100, 'AA');
INSERT INTO T143 VALUES(200, 'BB');
INSERT INTO T143 VALUES(200, 'BB');
INSERT INTO T143 VALUES(200, 'CC');
INSERT INTO T143 VALUES(300, 'DD');
-- 方法1(使用中间表)
-- 1.创建中间表
CREATE TABLE T144
(
ID NUMBER(4),
NAME VARCHAR2(20)
);
-- 2. 将数据保存到中间表
INSERT INTO T144
SELECT DISTINCT * FROM T143;
-- 3. 删除原表中所有数据
TRUNCATE TABLE T143;
-- 4. 从中间表中拷贝回数据
INSERT INTO T143 SELECT * FROM T144;
-- 5. 查看结果
SELECT * FROM T143;
2楼有语法错误。纠正一下下delete from tb where id in (select id from (select id,ROW_NUMBER() over(partition by code order by id desc)as rn from tb)a where rn>1)
DELETE FROM T A WHERE ID < (SELECT MAX(ID) FROM T B WHERE B.CODE = A.CODE);
delete table a where not exists
(select 1 from table group by code having a.id = max(id)
)
delete from table where rowid in(
select rowid from(
select rowid,
row_number() over(partition by code order by id desc) rn
from table
where rn>1))