SQL 删除重复记录,同时统计重复记录某一列的数据 以及 SET XACT_ABORT

来源:互联网 发布:上海哥瑞利软件 编辑:程序博客网 时间:2024/06/05 16:48

ID  内容    出现次数
1     qq      5
2     bb      2
3     qq      1
4     cc      3
要变成 
ID  内容    出现次数
1     qq      6
2     bb      2
4     cc      3
(说明:"内容"重复的,将出现次数求和,留一条记录)

删除重复的可以,要同总数不怎么弄,而且要效率高的,数据量太大了,所以请教大家

select    (select  top  1  [ID] from math  where txt=a.txt)  as  id,

   a.txt, sum(a.shows) as  shows  from math  a  group by  txt   order by

 (select  top  1  [ID] from math  where txt=a.txt)


表wordstock
字段 :wordstockID(主键)   keyword(内容)  times(次数)

 

------------------------------------
--用途:整理wordstock表,重复记录留一条,times(出现次数) 累加
--项目名称:Counts
--说明:Mathew
--时间:2008-5-20  10:38
------------------------------------
CREATE PROCEDURE Counts_WordStock_CheckUP
 AS
set xact_abort on

BEGIN TRAN
 
SELECT * into #temp FROM (SELECT   keyword , types,sum(a.times) AS  times 

FROM wordstock  a  group by  keyword  ,types) as cc


DELETE FROM wordstock

INSERT INTO wordstock (keyword,times ,types) SELECT keyword,times,types 

FROM #temp

DROP TABLE #temp

IF @@error=0
 begin
    COMMIT  TRAN
RETURN
end

ELSE
begin
       ROLLBACK TRAN
 RETURN
end
GO

set xact_abort on
    begin transaction
   语句
   if @@error=0
    commit    else
       rollback


Set   NOCOUNT   ON   选项可防止将会话中每一条语句所影响的行数消息发回给请求的

客户机  
   
   
  SET   XACT_ABORT  
  指定当   Transact-SQL   语句产生运行时错误时,Microsoft®   SQL  

Server™   是否自动回滚当前事务。  
   
  语法  
  SET   XACT_ABORT   {   ON   |   OFF   }  
   
  注释  
  当   SET   XACT_ABORT   为   ON   时,如果   Transact-SQL   语句产生运行时

错误,整个事务将终止并回滚。为   OFF   时,只回滚产生错误的   Transact-SQL  

语句,而事务将继续进行处理。编译错误(如语法错误)不受   SET   XACT_ABORT  

的影响。  
   
  对于大多数   OLE   DB   提供程序(包括   SQL   Server),隐性或显式事务中的

数据修改语句必须将   XACT_ABORT   设置为   ON。唯一不需要该选项的情况是提供程

序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。    
   
  SET   XACT_ABORT   的设置是在执行或运行时设置,而不是在分析时设置

原创粉丝点击