首页 > 解决方案 > 查找重复的 SQL 查询,然后选择其中一条记录

问题描述

我正在尝试编写 SQL 查询。我想检查我是否有任何重复的 SNO+SG 组合。如果找到类似的重复记录,我们选择没有标志 Y 的记录。(我们不想选择为该重复组合填充标志列的记录)。仅当发现重复组合时才应遵循此操作。我在此处附加了示例输入和输出:在此处输入图像描述

有人可以帮我解决这个问题吗?

标签: mysqlsql

解决方案


您可以使用row_number()count()

select t.*
from (select t.*,
             row_number() over (partition by sno, sg order by (flag = 'Y') desc) as seqnum,
             count(*) over (partition by sno, sg) as cnt
      from t
     ) t
where cnt > 1 and seqnum = 1;

推荐阅读