Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle SQL Developer中从两个表中删除重复数据_Sql_Oracle_Duplicates_Sql Delete - Fatal编程技术网

如何在Oracle SQL Developer中从两个表中删除重复数据

如何在Oracle SQL Developer中从两个表中删除重复数据,sql,oracle,duplicates,sql-delete,Sql,Oracle,Duplicates,Sql Delete,我的第一个表a的ID、invdate和invnumber列具有以下值: (1, 01/10/13, 1) (2, 02/10/13, 2) (2, 02/10/13, 2) (3, 03/10/13, 3) (4, 04/10/13, 4) (4, 05/10/13, 4) (1, 19/06/1997, Fox, Migan) (2, 30/07/1993, Todd, James) (2, 30/07/1993, Todd, James) (3, 1/08/1994, Xi, Ji) (4

我的第一个表a的ID、invdate和invnumber列具有以下值:

(1, 01/10/13, 1)
(2, 02/10/13, 2)
(2, 02/10/13, 2)
(3, 03/10/13, 3)
(4, 04/10/13, 4)
(4, 05/10/13, 4)
(1, 19/06/1997, Fox, Migan)
(2, 30/07/1993, Todd, James)
(2, 30/07/1993, Todd, James)
(3, 1/08/1994, Xi, Ji)
(4, 2/07/1992, Fared, Bob)
(4, 2/07/1992, Fared, Bob) 
我的第二个表b包含ID、DATEOFBIRTH、lastname和firstname列,其中包含以下值:

(1, 01/10/13, 1)
(2, 02/10/13, 2)
(2, 02/10/13, 2)
(3, 03/10/13, 3)
(4, 04/10/13, 4)
(4, 05/10/13, 4)
(1, 19/06/1997, Fox, Migan)
(2, 30/07/1993, Todd, James)
(2, 30/07/1993, Todd, James)
(3, 1/08/1994, Xi, Ji)
(4, 2/07/1992, Fared, Bob)
(4, 2/07/1992, Fared, Bob) 
如何使用DELETE FROM函数删除两个表中的所有重复行?我想我应该以某种方式合并这些表,然后删除重复的行,但不太确定

至于结果,

SELECT * FROM a 
应提供:

(1, 01/10/13, 1)
(2, 02/10/13, 2)
(3, 03/10/13, 3)
(4, 04/10/13, 4)

SELECT * FROM B; 
(1, 19/06/1997, Fox, Migan)
(2, 30/07/1993, Todd, James)
(3, 1/08/1994, Xi, Ji)
(4, 2/07/1992, Fared, Bob)
应提供:

(1, 01/10/13, 1)
(2, 02/10/13, 2)
(3, 03/10/13, 3)
(4, 04/10/13, 4)

SELECT * FROM B; 
(1, 19/06/1997, Fox, Migan)
(2, 30/07/1993, Todd, James)
(3, 1/08/1994, Xi, Ji)
(4, 2/07/1992, Fared, Bob)
更新解决方案:

从WHERE rowid中删除>从b中选择minrowid,其中a.ID=b.ID


有人能给我解释一下这个sql吗?

下面是b表的示例

从这里开始

您也可以为您的a表执行类似操作

  DELETE FROM 
  b  t1
  WHERE 
  t1.rowid > 
  ANY ( SELECT  t2.rowid FROM  b t2
       WHERE 
          t1.id = t2.id AND  t1.DATEOFBIRTH = t2.DATEOFBIRTH AND t1.lastname = t2.lastname AND  t1.firstname  = t2.firstname 
       );

编辑您的问题并解释/显示所需的结果。您只需在选择时筛选重复的行,或实际删除表中的重复行?是的,我需要使用“从中删除…”。。。要从表中实际删除重复的行Delete from不是一个函数说0行Delete你的行真的重复了吗?运行查询:按id、DATEOFBIRTH、lastname、firstname按计数顺序从b组中选择count*descAnd watch,此查询的第一个结果是什么?哦,谢谢,我认为只有表a中的行是重复的