我有一个SQL服务器数据库,并且在一个(RanjePhoneNumber)列中有许多重复。 我试图从RanjePhoneNumber列中具有重复项的表中选择行,并且它们具有相同的CityId。
我的表:
RanjePhoneNumber ContactId CityId
776323 280739 7
342261 186372 80
468284 75980 7
776323 101969 9
362875 170242 13
224519 164914 7
342261 203606 55
776323 280733 7
342261 203602 80
我的预期结果:
RanjePhoneNumber ContactId CityId
776323 280739 7
342261 186372 80
776323 280733 7
342261 203602 80
答案 0 :(得分:2)
按这两列分组:
SELECT RanjePhoneNumber, CityID
FROM dbo.TableName
GROUP BY RanjePhoneNumber, CityID
HAVING COUNT(*) > 1
如果要选择所有列,可以使用排名功能:
WITH CTE AS
(
SELECT t.*, Cnt = COUNT(*) OVER (PARTITION BY RanjePhoneNumber, CityID)
FROM dbo.TableName
)
SELECT RanjePhoneNumber, ContactId, CityId
FROM CTE
WHERE Cnt > 1
如果您不想查找属于此“重复组”的所有行,但只想查找除第一个之外的所有行,请使用显示的ROW_NUMBER
方法the other answer。
答案 1 :(得分:1)
;with cte
as
(select
Ranjephonenumber,
contactid,
cityid,
row_number() over (partition by Ranjephonenumber,cityid order by cityid) as rn
from table
)
select
Ranjephonenumber,contactid,city from cte where rn>1