oracle 11g
中对此结果的查询是什么我有一个表调用者product_table.in我的product_table我没有主键,我有这些记录
pid pname pprice
=== ===== ======
101 aaa 343
101 aaa 343
101 aaa 343
101 aaa 343
我想要一个查询,它将删除除一条记录之外的所有重复值
表示执行该查询后我需要此结果
pid pname pprice
=== ===== ======
101 aaa 343
可以使用sql查询或子查询而不使用任何函数或过程逻辑吗?
提前致谢
答案 0 :(得分:2)
在Oracle中,您可以使用rowid
和子查询来执行此操作:
delete from product_table
where rowid not in (select min(rowid)
from product_table
group by pid, pname, pprice
);
答案 1 :(得分:0)
先生,戈登·林诺夫的答案是正确的,但这也可以通过自我加入
来实现delete from product_table p1
where rowid not in
(select max(rowid) from product_table p2
where p1.pid = p2.pid );