首页 > 解决方案 > SQL返回列中具有重复值的行

问题描述

我试图返回显示OrderIds 在列中具有重复值的Notes行,即在列OrderId中具有相同值的不同 s Notes

我正在使用这个查询:

SELECT 
    [OrderId],
    [Notes]
FROM
    [ord].[LineItems]
GROUP BY 
    OrderId, Notes
HAVING 
    COUNT(Notes) > 1;

上述查询的问题在于它返回了误报,即在列中有重复的Notes行,但它们具有相同的OrderId(有时可能有重复的行显示相同的 OrderIds 和 Notes 值,因为在其他领域)。

我只希望它返回在列中具有重复值的唯一s。 如何消除这些误报?OrderIdNotes

抱歉,这很难解释,而且我正在使用的数据库没有很好地规范化。

标签: sqlsql-server

解决方案


您应该汇总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);

推荐阅读