mysql - 查找重复的 SQL 查询,然后选择其中一条记录
问题描述
我正在尝试编写 SQL 查询。我想检查我是否有任何重复的 SNO+SG 组合。如果找到类似的重复记录,我们选择没有标志 Y 的记录。(我们不想选择为该重复组合填充标志列的记录)。仅当发现重复组合时才应遵循此操作。我在此处附加了示例输入和输出:在此处输入图像描述
有人可以帮我解决这个问题吗?
解决方案
您可以使用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;
推荐阅读
- python-3.x - 在网站模块中重用表单、树、看板视图
- driverless-ai - 我正在尝试在本地 Ubuntu 机器上启动 driverlessai
- php - Laravel 5.4 不一致无响应且日志中无错误
- javascript - AgGrid 自定义时间过滤器
- groovy - Groovy Jmeter 在列表中收集 XML 的元素
- android - Android 内核 Zimage 解压
- jenkins - Jenkins 因“PKIX 路径构建”错误而失败
- c# - 包含中的动态查询过滤器表达式
- powershell - 将对象与powershell中的通配符字符串匹配
- php - 如何在 php 7 中读/写 id3 标签?