查询同一ID同一列中不同值的SQL表
我有一个SQL Server 2012表,其中包含ID、名字和姓氏。每个人的ID都是唯一的,但由于历史提要中的错误,不同的人被分配了相同的ID查询同一ID同一列中不同值的SQL表,sql,sql-server,windows,sql-server-2012,querying,Sql,Sql Server,Windows,Sql Server 2012,Querying,我有一个SQL Server 2012表,其中包含ID、名字和姓氏。每个人的ID都是唯一的,但由于历史提要中的错误,不同的人被分配了相同的ID ------------------------------ ID FirstName LastName ------------------------------ 1 ABC M 1 ABC M 1 ABC M 1 ABC
------------------------------
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
在这种情况下,ID为1的人是不同的,他们的姓氏明显不同,但他们有相同的ID。我如何查询并获得结果?本例中的表有数百万行。如果它是一个较小的表,我可能会查询计数大于1的所有ID,并在excel中过滤它们
我想做的是,得到一个所有这些ID的列表,这些ID已经分配给了两个不同的用户
任何想法或帮助都将不胜感激
编辑:我认为我没有很好地阐述这个问题
有两个ID多次出现。1和4。id为4的行是相同的。我不想在我的结果中出现这种情况。ID为1的行,虽然第一个名称相同,但第一行的姓氏不同。我只想要那些ID相同但其中一个名字或姓氏不同的ID
我尝试将多次出现的ID加载到临时表中,并尝试将其与父表进行比较,尽管没有成功。我还可以尝试实施其他想法吗?您希望得到什么结果?对不起。我不是很清楚。刚刚编辑了问题,重读了你的问题后,我更加困惑了。您说过id为4的行是相同的。与您提供的数据相比,这不是真的。谢谢您的时间,但我正在寻找一些不同的东西。我意识到我的问题不完整。所以,我只是更新了它:谢谢你的时间,但我正在寻找一些不同的东西。我意识到我的问题不完整。所以,我刚刚更新了它:
SELECT
ID
FROM
<<Table>>
GROUP BY
ID
HAVING
COUNT(*) > 1;
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