如何在Oracle SQL Developer中从两个表中删除重复数据
我的第一个表a的ID、invdate和invnumber列具有以下值:如何在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
(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中的行是重复的