[英]SQL Count Unique Deleted Sets
我的数据库中目前有一个简单的表,用于存储集合和值。 我希望能够删除数据库中的所有条目,并返回已删除的不同集的数量。
create table sets(
SetId varchar(50)
Value int
)
如果我有两个带有两个值的集合,那么该表将被加载四个条目。
Set1, 0
Set1, 1
Set2, 0
Set2, 1
如果我删除所有内容,我希望能够统计删除了多少个唯一的SetId,因此在上面的示例中,它应该返回2。
现在,我可以通过创建一个包含已删除的SetId的tempTable来完成此操作,然后算出
CREATE TABLE #temp
(
SetId varchar(50)
);
delete from Sets
OUTPUT DELETED.SetId INTO #temp
select count(distinct SetId) from #temp;
是否有更好的方法来完成此操作而不必使用临时表?
如果您有很多行,并且想避免使用临时表(很多IO):
declare @cnt int;
set xact_abort on
begin transaction
begin try
select @cnt = count(distinct SetId) from sets;
delete from sets;
commit transaction
end try
begin catch
rollback;
end catch
要么 :
declare @cnt int;
set xact_abort on
begin transaction
begin try
select @cnt = count(distinct SetId) from sets;
truncate table sets
commit transaction
end try
begin catch
rollback;
end catch
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.