SQL查询,在第二列中使用不同数据查找一列中的重复数据

时间:2016-10-13 21:17:09

标签: sql sql-server tsql

假设我的数据如下:

ID   Date   Data
A    D1     123
A    D1     456
A    D2     123

我正在寻找的是一个select语句,它将拉出ID和Date作为一对重复的所有行,但数据不匹配。在这种情况下,它将返回前两行,因为ID A和Date D1作为一对重复,但数据是不同的。不会返回第三行,因为不会重复ID和日期组合。

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。以下是使用exists的一个选项:

select *
from yourtable t
where exists (
    select 1
    from yourtable t2
    where t.id = t2.id and t.date = t2.date and t.data <> t2.data
)

答案 1 :(得分:0)

SELECT  d.Id ,
        d.Date ,
        d.Data
FROM    YourTable d
        INNER JOIN ( SELECT Id ,
                            Date
                     FROM   YourTable
                     GROUP BY Id ,
                            Date
                     HAVING COUNT(*) > 1
                   ) a ON a.Id = d.Id