查询具有相同ID的同一列中不同值的SQL Server表

查询具有相同ID的同一列中不同值的SQL Server表,sql,sql-server,windows,group-by,querying,Sql,Sql Server,Windows,Group By,Querying,我有一个SQL Server 2012表,其中包含ID、名字和姓氏。每个人的ID都是唯一的,但由于历史提要中的错误,不同的人被分配了相同的ID ------------------------------ ID FirstName LastName ------------------------------ 1 ABC M 1 ABC M 1 ABC M 1 ABC N 2 BCD

我有一个SQL Server 2012表,其中包含ID、名字和姓氏。每个人的ID都是唯一的,但由于历史提要中的错误,不同的人被分配了相同的ID

------------------------------
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    DEF         T
有两个ID多次出现。1和4。id为4的行是相同的。我不想在我的结果中出现这种情况。ID为1的行,虽然第一个名称相同,但第一行的姓氏不同。我只想要那些ID相同但其中一个名字或姓氏不同的ID

我尝试将多次出现的ID加载到临时表中,并尝试将其与父表进行比较,尽管没有成功。还有其他我可以尝试和实施的想法吗

这是我正在寻找的输出

ID
---
1

如果需要ID,请使用聚合和
having

select id
from t
group by id
having min(firstname) <> max(firstname) or min(lastname) <> max(lastname);
选择id
从t
按id分组
最小(名字)最大(名字)或最小(名字)最大(名字);

试试这个:

CREATE TABLE #myTable(id INT, firstname VARCHAR(50), lastname VARCHAR(50))

INSERT INTO #myTable VALUES 
(1,    'ABC',         'M'),
(1,    'ABC',         'M'),
(1,    'ABC',         'M'),
(1,    'ABC',         'N'),
(2,    'BCD',         'S'),
(3,    'CDE',         'T'),
(4,    'DEF',         'T'),
(4,    'DEF',         'T')

SELECT id FROM (
    SELECT DISTINCT id, firstname, lastname
    FROM #myTable) t GROUP BY id HAVING COUNT(*)>1

输出是:1

你也能给我们看一下想要的输出吗?我只需要查询输出。在这种情况下,1