sql语句去除重复记录(多表连接的查询)

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

sql语句去除重复记录(多表连接的查询)--处理表重复记录(查询和删除)/******************************************************************************************************************************************************1、Num、Name相同的重复值记录,没有大小关系只保留一条2、Name相同,ID有大小关系时,保留大或小其中一个记录******************************************************************************************************************************************************/--1、用于查询重复处理记录(如果列没有大小关系时2000用生成自增列和临时表处理,SQL2005用row_number函数处理)-->-->生成測試數據ifnotobject_id('Tempdb..#T')isnulldroptable#TGoCreatetable#T([ID]int,[Name]nvarchar(1),[Memo]nvarchar(2))Insert#Tselect1,N'A',N'A1'unionallselect2,N'A',N'A2'unionallselect3,N'A',N'A3'unionallselect4,N'B',N'B1'unionallselect5,N'B',N'B2'Go--I、Name相同ID最小的记录(推荐用1,2,3),方法3在SQl05时,效率高于1、2方法1:Select*from#Tawherenotexists(select1from#TwhereName=a.NameandID<a.ID)方法2:selecta.*from#Tajoin(selectmin(ID)ID,Namefrom#TgroupbyName)bona.Name=b.Nameanda.ID=b.ID方法3:select*from#TawhereID=(selectmin(ID)from#TwhereName=a.Name)方法4:selecta.*from#Tajoin#Tbona.Name=b.Nameanda.ID>=b.IDgroupbya.ID,a.Name,a.Memohavingcount(1)=1方法5:select*from#TagroupbyID,Name,MemohavingID=(selectmin(ID)from#TwhereName=a.Name)方法6:select*from#Tawhere(selectcount(1)from#TwhereName=a.NameandID<a.ID)=0方法7:select*from#TawhereID=(selecttop1IDfrom#TwhereName=a.nameorderbyID)方法8:select*from

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航