【问题标题】:Get detailed number of Rows affected by insert statement获取受插入语句影响的详细行数
【发布时间】:2014-03-29 16:46:30
【问题描述】:

我的表设置有名为“月”的列之一。 我在表上运行 sql insert 语句,并获取受影响的行数。

有没有办法获取每个“月”值受影响的行数?

如果我的表是“月”列上的分区,这有帮助吗?

我的 sql 是一个标准的,如下所示:

插入“目标表” (第 1 列、第 2 列、月、第 4 列、....) 选择列名 来自源表;

我正在使用 .Net 的 SqlClient 中的 SqlCommand 将 sql 传递到 SQL 服务器。

【问题讨论】:

  • 请包含你的sql。

标签: sql database-partitioning rows-affected


【解决方案1】:

单个insert 语句返回一个受影响的行数。您为“月”的每个值执行单独的插入,因此 12 个插入语句而不是 1 个。这会对性能产生一些影响。

或者,您可以将要插入的行加载到临时表中并执行插入,然后报告事情,类似于以下内容:

create table #work
( month                     int not null ,
  primary_key_of_real_table int not null ,
)
insert #work
select t.month , t.primary_key_column
from source_table t
where -- your filter criteria here

insert target_table
( ... column list ... )
select ... column list ...
from #work t
join source_table x on x.primary_key_column =t.primary_key_of_real_table

select m.month , cnt = sum(case when t.month is null then 1 else 0 end)
from ( select month = 1 union all
       select month = 2 union all
       ...
       select month = 12
     ) m
left join #work t on t.month = m.month
group by t.month
order by t.month

【讨论】:

  • 谢谢。出于性能原因,我对插入语句进行了分组,因此出于同样的考虑,我无法采用此选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2011-10-03
  • 1970-01-01
相关资源
最近更新 更多