我需要从下面的Object表中选择以绿色突出显示的重复值:
我尝试过以下代码的不同组合.但是不能返回两个重复的行.
;with CTE as (Select distinct ID, count([Object ID]) as [Object ID] from #Object group by ID having count([Object ID]) > 1) select * from CTE where NOT EXISTS (Select distinct ID , count(distinct [Object ID]) as [Object ID] from #Object group by ID having count(distinct [Object ID]) > 1);
John Cappell.. 7
您可以使用窗口函数ROW_NUMBER()来标识重复的行.
Declare @YourTable table (ID int,ObjectID int,ObjectName varchar(50)) Insert into @YourTable values (250708,321,'hotel'), (250708,343,'mercantile'), (250708,370,'parking'), (250708,370,'residential condominium'), (250708,370,'residential condominium'), (250708,401,'residential condominium'), (250708,401,'residential condominium') ;with cte as ( Select * ,RN = Row_Number() over ( Partition By ID,ObjectID,ObjectName Order by (Select NULL)) From @YourTable ) Select * From cte Where RN>1
返回
在一个侧面说明,您可以通过更换最终删除这些记录Select *
与DELETE
您可以使用窗口函数ROW_NUMBER()来标识重复的行.
Declare @YourTable table (ID int,ObjectID int,ObjectName varchar(50)) Insert into @YourTable values (250708,321,'hotel'), (250708,343,'mercantile'), (250708,370,'parking'), (250708,370,'residential condominium'), (250708,370,'residential condominium'), (250708,401,'residential condominium'), (250708,401,'residential condominium') ;with cte as ( Select * ,RN = Row_Number() over ( Partition By ID,ObjectID,ObjectName Order by (Select NULL)) From @YourTable ) Select * From cte Where RN>1
返回
在一个侧面说明,您可以通过更换最终删除这些记录Select *
与DELETE