当前位置: 首页 > 面试题库 >

SQL查询重复删除帮助

子车芷阳
2023-03-14
问题内容

我需要从下表中删除半重复记录

ID      PID      SCORE
1       1        50
2       33       20
3       1        90
4       5        55
5       7        11
6       22       34

对于存在的任何重复PID,我想删除最低得分记录。在上面的示例中,将删除ID 1。我试图提出一种不使用循环的方法,但确实很挣扎。

任何帮助,将不胜感激。

谢谢


问题答案:
    DELETE t.* 
    FROM Table1 t 
    JOIN (SELECT pid, MIN(score) minScore, MAX(id) maxId
            FROM Table1
        GROUP BY pid) t1 
    ON t.pid = t1.pid 
   AND t.score = t1.minScore 
   AND t.id < t1.maxId


 类似资料:
  • 当我要执行以下查询时: 我得到了错误: 消息102,级别15,状态1,第1行“,”附近的语法不正确。 编辑: 我要删除klantId 3。

  • 问题内容: 没有人有一个优雅的sql语句来删除表中的重复记录,但前提是重复项的数量多于x个?因此,最多允许2或3个重复项,仅此而已? 当前,我有一条执行以下操作的select语句: 这很好用。但是现在,我只想删除那些重复超过2个的行。 谢谢 问题答案: with cte as ( select row_number() over (partition by dupcol1, dupcol2 ord

  • 问题内容: 如何从以以下方式设置的表中删除重复项? 一个工作人员可以有多个与他们相关联的type_ID,我想删除所有重复的类型。如果有重复项,我想删除具有最新条目的类型。 问题答案: 窗口函数row_number()的教科书候选: 这也照顾了一组相同的受骗者的情况。 请参阅有关data.SE的简化演示。 更新较简单的版本 事实证明,这可以简化:在SQL Server中,您可以直接从CTE中删除:

  • 问题内容: 我有一张桌子,如下所示: 我想基于3个字段emp_name,emp_address和sex删除重复的条目。和我的结果表(删除重复项后)应类似于- 我不记得如何为此编写SQL查询。任何人都可以帮忙吗? 问题答案: 看起来所有四个列值都是重复的,因此您可以执行以下操作- 但是,如果婚姻状况可能有所不同,并且您还有其他根据其选择的列(例如,您希望基于create_date列作为最新记录),则

  • 我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!

  • 问题内容: 这可能很简单,这是我的查询: 但这只会删除具有相同u.name和p.pic_id的行中的重复项。我想要这样,如果名称有任何重复,则只剩下其他行。这是一个奇怪的查询,但是总的来说,我如何将不重复项应用于SELECT子句的单个列? 问题答案: 任意选择保留最小的PIC_ID。另外,请避免使用隐式连接语法。