求删资料 sql我有一个订单文件
主键是 ordid 和 version现有资料﹕Ordid version
Aa 0
Aa 1
Bb 0
Bb 1
Cc 0
Cc 1
Cc 2我现在只要版本最大的﹐删掉之前的版本最后剩﹕
Ordid version
Aa 1
Bb 1
Cc 2不過要注意 還有訂單子檔也要刪
主键是 ordid 和 version现有资料﹕Ordid version
Aa 0
Aa 1
Bb 0
Bb 1
Cc 0
Cc 1
Cc 2我现在只要版本最大的﹐删掉之前的版本最后剩﹕
Ordid version
Aa 1
Bb 1
Cc 2不過要注意 還有訂單子檔也要刪
解决方案 »
- 在装有oracle服务器的机器上调试程序,还要安装oracle客户端吗
- oracle通过透明网关访问sqlserver,TNS-12541: TNS: 无监听程序
- 用sqlldr导入数据到oracle出错的问题
- oracle的安装
- 数据库和数据库实例
- 如何写一个检测C:\Images目录如果存在就删除其中所有文件的存储过程吗?
- 求一条sql问
- 外连接的问题
- 请问如何启动OracleOraHome81ManagementServer
- Oracle分页查询中的问题
- select to_char(sysdate,'yyyy/mm/dd hh:mi/ss')from dual ,如果要显示毫秒的话格式应该怎么写
- (在线等,急)怎样找到2个表(结构相同)有哪些字段的值不同?
from tablename
group by Ordid
where rowid not in(
select rowid from(
select Ordid,max(version)
from tablename
group by Ordid))
t1.Ordid=t2.Ordid and t1.version<t2.version)
select Ordid,max(version)
from tablename
group by Ordid
会有 rowid??
delete from tablename
where Ordid||version not in(
select Ordid||max(version) from tablename
group by Ordid)
DELETE FROM "訂單表"
where (ordid,version) IN (
select ordid,version from (
select ordid,version,row_number() over (partition by ordid order by version DESC) as row_Num from "訂單表") where row_Num<> 1
);
以上語句即可達到樓主要求,但一定要保証主键是ordid 和version,即同ordid值的行中,不能再有相同的version值的行,否則不會保留到唯一行,而且還可能出現錯誤,樓主可以測試一下。
delete from "訂單表" where (ordid,version) NOT IN (select ordid,max(version) from "訂單表" group by ordid);