查询具有相同ID的同一列中不同值的SQL Server表
我有一个SQL Server 2012表,其中包含ID、名字和姓氏。每个人的ID都是唯一的,但由于历史提要中的错误,不同的人被分配了相同的ID查询具有相同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
------------------------------
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