sql - SQL返回列中具有重复值的行
问题描述
我试图返回显示OrderId
s 在列中具有重复值的Notes
行,即在列OrderId
中具有相同值的不同 s Notes
。
我正在使用这个查询:
SELECT
[OrderId],
[Notes]
FROM
[ord].[LineItems]
GROUP BY
OrderId, Notes
HAVING
COUNT(Notes) > 1;
上述查询的问题在于它返回了误报,即在列中有重复的Notes
行,但它们具有相同的OrderId
(有时可能有重复的行显示相同的 OrderIds 和 Notes 值,因为在其他领域)。
我只希望它返回在列中具有重复值的唯一s。 如何消除这些误报?OrderId
Notes
抱歉,这很难解释,而且我正在使用的数据库没有很好地规范化。
解决方案
您应该汇总Notes
然后检查订单的不同计数:
WITH cte AS (
SELECT Notes
FROM LineItems
GROUP BY Notes
HAVING MAX(OrderId) <> MIN(OrderId)
)
SELECT *
FROM LineItems li
WHERE EXISTS (SELECT 1 FROM cte t WHERE t.Notes = li.Notes);
推荐阅读
- typescript - 如何让 Jest 自定义匹配器在打字稿中工作?
- angular - 单击时如何禁用按钮并更改文本
- java - Spring Cloud Gateway:将路径 /a 映射到路径 /b
- bash - 在 shell 中调用脚本后获取文本
- git - 合并分支后如何干净地执行 git pull-with-rebase
- css - iOS地址栏停止页面滚动
- istio - Istio 虚拟服务 - 我可以根据调用服务路由流量吗
- mysql - MYSQL 选择排除行中具有相同值的重复项
- python - 如何计算python中文本框的数据输入?
- firebase - 单个多租户 Firestore 还是多个单租户 Firestore?