SQLSERVER实用经验技巧集[二]
来源:互联网 发布:什么录音软件 编辑:程序博客网 时间:2024/06/07 12:37
删除中重复数据的几个方法
数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
方法一
declare@maxinteger,@idinteger
declarecur_rowscursorlocalforselect主字段,count(*)from表名groupby主字段havingcount(*)>1
opencur_rows
fetchcur_rowsinto@id,@max
while@@fetch_status=0
begin
select@max=@max-1
setrowcount@max
deletefrom表名where主字段=@id
fetchcur_rowsinto@id,@max
end
closecur_rows
setrowcount0
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
selectdistinct*fromtableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
selectdistinct*into#TmpfromtableName
droptabletableName
select*intotableNamefrom#Tmp
droptable#Tmp
发生这种重复的原因是表不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
selectidentity(int,1,1)asautoID,*into#TmpfromtableName
selectmin(autoID)asautoIDinto#Tmp2from#TmpgroupbyName,autoID
select*from#TmpwhereautoIDin(selectautoIDfrom#tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
更改数据库中表的所属用户的两个方法
大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户……
--更改某个表
execsp_changeobjectowner'tablename','dbo'
--存储更改全部表
CREATEPROCEDUREdbo.User_ChangeObjectOwnerBatch
@OldOwnerasNVARCHAR(128),
@NewOwnerasNVARCHAR(128)
AS
DECLARE@Name asNVARCHAR(128)
DECLARE@Owner asNVARCHAR(128)
DECLARE@OwnerName asNVARCHAR(128)
DECLAREcurObjectCURSORFOR
select'Name' =name,
'Owner' =user_name(uid)
fromsysobjects
whereuser_name(uid)=@OldOwner
orderbyname
OPEN curObject
FETCHNEXTFROMcurObjectINTO@Name,@Owner
WHILE(@@FETCH_STATUS=0)
BEGIN
if@Owner=@OldOwner
begin
set@OwnerName=@OldOwner+'.'+rtrim(@Name)
execsp_changeobjectowner@OwnerName,@NewOwner
end
--select@name,@NewOwner,@OldOwner
FETCHNEXTFROMcurObjectINTO@Name,@Owner
END
closecurObject
deallocatecurObject
GO
SQLSERVER中直接循环写入数据1
- SQLSERVER实用经验技巧集[二]
- SQLSERVER实用经验技巧集
- SQLSERVER实用经验技巧集[三]
- SQLSERVER实用经验技巧集[一]
- SQL Server实用经验技巧集 [二]
- SQL SERVER实用经验技巧集 [二]
- SQL SERVER实用经验技巧集 [二]
- SqlServer实用操作小技巧集合(二)
- SQL SERVER实用经验技巧集
- SQL Server实用经验技巧集 [一]
- [转]SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集
- SQL SERVER实用经验技巧集 [一]
- SQL SERVER实用经验技巧集 [三]
- 在CentOS下安装NVIDIA显卡驱动。
- 金额转换
- MS2k数据转换服务部署
- 软件工程师应该知道的10个问题
- 2008年4月28日A股市场存在筑底异样
- SQLSERVER实用经验技巧集[二]
- SQLSERVER实用经验技巧集[三]
- DA22 - ASTA向RemObjects转换
- 一段程序的重构 TREE
- Java正则表达式详解
- DA23 - 介绍Data Abstract .NET版
- SQLSERVER实用经验技巧集[一]
- ASP.NET 页面对象模型
- 跨浏览器仿模式对话框的实现-集成方式最简单的在线Web编辑器(5分钟内完成集成)