使用相同ID在同一列中查询具有不同值的SQL表

时间:2016-12-07 23:46:16

标签: sql sql-server windows sql-server-2012 querying

我有一个带有Last nameID的SQL Server 2012表。 ------------------------------ ID FirstName LastName ------------------------------ 1 ABC M 1 ABC M 1 ABC M 1 ABC N 2 BCD S 3 CDE T 4 DEF T 4 DEG T 每个人都是唯一的,但由于历史Feed中的错误,不同的人被分配了相同的ID。

ID’s

在这种情况下,ID 1的人不同(姓氏明显不同),但他们的ID’s相同。如何查询并获得结果?在这种情况下,表有数百万行。如果它是一个较小的表,我可能会使用count > 1查询所有ID's并在excel中过滤它们。

我要做的是,获取已分配给两个不同用户的所有此类{{1}}的列表。

非常感谢任何想法或帮助。

编辑:我不认为我很好地解决了这个问题。

有两个ID多次出现。 id为4的行是相同的。我不想在我的结果中这样做。 ID为1的行,虽然名字相同,但是1行的姓氏不同。我只想要那些ID相同但名字或名字不同的ID。

我尝试将多次出现的ID加载到临时表中,并尝试将其与父表进行比较,但未成功。我可以尝试和实施的任何其他想法吗?

2 个答案:

答案 0 :(得分:3)

SELECT
    ID
FROM
    <<Table>>
GROUP BY
    ID
HAVING
    COUNT(*) > 1;

答案 1 :(得分:0)

SELECT *
FROM myTable
WHERE ID IN (
      SELECT ID
      FROM myTable
      GROUP BY ID
      HAVING MAX(LastName) <> MIN(LastName) OR MAX(FirstName) <> MIN(FirstName) 
      )
ORDER BY ID, LASTNAME