首页 > 解决方案 > 根据两列删除记录

问题描述

我正在尝试做的是获取这些看起来像这样的记录:

    Name    Enrollment_Month    Premium
    John    20201201            $76.00 
    John    20201201            $54.00
    Tony    20201201            $20 

并将其更改为如下所示:

Name    Enrollment_Month    Premium
Tony    20201201            $20 

基本上试图删除名称和注册月份相同的两条记录。

任何想法,我将不胜感激

标签: sqloraclesql-delete

解决方案


您可以使用分析功能来识别重复记录并删除它们,rowid具体如下:

DELETE FROM YOUR_TABLE T
 WHERE T.ROWID IN (
   SELECT CASE 
            WHEN COUNT(1) OVER (PARTITION BY ENROLLMENT_MONTH, NAME) > 1 
            THEN ROWID 
          END AS ROWIDS
        FROM YOUR_TABLE)

推荐阅读