delete from T T1
WHERE EXISTS (SELECT 1 FROM T
WHERE 字段2=T1.字段2
AND 字段3=T1.字段3
AND ROWID<T1.ROWID)
解决方案 »
- sql 不等於跟null為什麼不能同時抓出?
- 一张表中的date字段是TIMESTAMP(6)类型,它的值形式是:29-9月 -11 03.52.49.428827 下午 如何写查询条件
- ora-01219
- 安装oracle11g出现的问题(网络配置检查的结果为: 失败)
- Oracle错误问题(错误号:ORA-01578&ORA-01110)
- 敏感数据存储在MSSQL或ORACLE中,大家都是怎么加密的?要求安全性能高
- 有关select查询速度的问题
- Oracle创建表的时候怎么样让表的主键自动增加?
- plsql登录检测不出数据库
- 请教关于weblogic10.3运行两天左右就必须重启的问题
- 求救 抱错
- 求高手幫忙,BW555在不!!!
2、重复数据很多的话,可以导入到中间表,然后删除原表?最后RENAME,重建约束和索引
SELECT MAX(ROWID) FROM temp
GROUP BY name,num
HAVING COUNT(*)>=2);
COMMIT;
只能说4#这种写法比较直观容易理解,执行效率就不好说了
如果数据量不大,用哪种都可以,差别不大,大数据量的话推荐exists的写法
这个感觉效率相差不是很多,这里是要删除重复行,所以要找到,然后剔除。一行找到之后并不返回,要继续往下查找下一个是否重复;有多行呢,还是要一一找出,全部剔除的。
delete
from (select b.name,
b.id,
row_number() over(partition by b.id, b.name order by b.id) nums,
rowid as rid
from BAS_PRODUCTMODEL_TEST b) t
where t.nums > 1 把表替换下,b.id,b.name是重复依据。