Sql 如何在没有PK的情况下删除重复行?(正常选择、disctint选择)

Sql 如何在没有PK的情况下删除重复行?(正常选择、disctint选择),sql,oracle,plsql,sqlplus,Sql,Oracle,Plsql,Sqlplus,情况是这样的 select name,surname,address from myTable -- returns 150rows select distinct name, surname, address from myTable -- returns 60rows 比方说,我不能用PK操作。如何删除重复的行 select name,surname,address from myTable MINUS select distinct name, surname,address from

情况是这样的

select name,surname,address from myTable -- returns 150rows

select distinct name, surname, address from myTable -- returns 60rows
比方说,我不能用PK操作。如何删除重复的行

select name,surname,address from myTable
MINUS
select distinct name, surname,address from myTable
不起作用了。。。减号删除所有内容

谢谢您的建议,请尝试:

delete FROM 
   myTable A
WHERE 
  a.rowid > 
   ANY (
     SELECT 
        B.rowid
     FROM 
        myTable B
     WHERE 
        A.name = B.name AND
        A.surname=B.surname AND
        A.address=B.address
        ); 
注意:我还没有测试过这个。

新表怎么样

create myTable2 as (select distinct name, surname, address from myTable);
drop myTable;
测试删除查询被高估了!;)是的……:)确切地但我是从一个工作示例中提出这个问题的。请跟我重复:“以数据库开发人员和用户的名义,我发誓/肯定/承诺,我将永远,永远,永远在我创建的每个表上定义一个主键——即使我太聪明了,不利于我自己,我只知道这次我真的不需要主键——所以帮帮我吧。”。