oracle如何查询或删除特定行

ID NUM CODE TIME

6 555 123 2014/01/01
7 555 127 2014/01/02
8 555 266 2014/01/03
3 999 533 2014/01/04
5 999 699 2014/01/05
2 333 866 2014/01/06

如上表
1、根据CODE值判断,查出NUM列相同的值中CODE最大值的行,如果NUM只有唯一值,也列出,得到结果(如果根据TIME判断,又该怎么写)
ID NUM CODE TIME
8 555 266 2014/01/03
5 999 699 2014/01/05
2 333 866 2014/01/06

2、根据CODE值判断,删除NUM列相同的值中CODE非最大值的行,如果NUM只有唯一值,则保留,得到结果(如果根据TIME判断,又该怎么写)
ID NUM CODE TIME
8 555 266 2014/01/03
5 999 699 2014/01/05
2 333 866 2014/01/06
上面数据只是举例,实际表中有几万条数据,也不知道都有哪些NUM是重复的,现在需要的是,如果有重复的NUM,则根据CODE值判断,保留最大值的那行,或者根据TIME判断,保留创建时间最新的那行。

第1个回答  2014-06-24
你怎么查询到指定行,就怎么删除。
select * from tbl where a='a' and b='b' and c='c';
对应删除
delete from tbl where a='a' and b='b' and c='c';追问

这只是举例,实际上万条数据,还不知道都有哪些NUM是重复的,你的方法基本没有可行性。

本回答被网友采纳
第2个回答  2016-10-09
Order by函数,嵌套查询需要数据组成新视图将新视图内的数据插入自建临时表,删除原表再创建,将临时表数据导入,删除临时表