我想更新数据库中的多行,这些值可能不同。想象一下这张表:
Username FirstName LastName
-------------------------------
user1 John Doe
user2 Jane Doe
user3 bill gates
如果我想更新表格,使其看起来像这样:
Username FirstName LastName
-------------------------------
user1 John Deer
user2 Jane Farmer
user3 Gill Bates
最好为每个用户使用一个 UPDATE
语句吗?或者是否可以通过一个查询来完成此操作?
是否可以将其放入存储过程并提供值的集合?
第二个问题是最好在更新之前检查值是否已更改?或者即使值相同也只更新每个人?
我目前正在使用 SQL Server 2005 和 C# 作为应用程序(如果相关的话)。
最佳答案
你可以试试这个
declare @TempTable1 table (UserName nvarchar(128) primary key, FirstName nvarchar(128), LastName(128))
insert into @TempTable1
select 'user1', 'John', 'Deer' union all
select 'user2', 'Jane', 'Farmer' union all
select 'user3', 'Gill', 'Bate'
update table1 set
FirstName = t2.FirstName,
LastName = t2.LastName
from table1 as t
inner join @TempTable1 as t2 on t2.UserName = t.UserName
或者如果您只想更新更改的字段
update table1 set
FirstName = isnull(t2.FirstName, t.FirstName),
LastName = isnull(t2.LastName, t.LastName)
from table1 as t
inner join @TempTable1 as t2 on t2.UserName = t.UserName
对于 C# 客户端应用程序,我认为通常的方法是创建过程
create procedure sp_Table1_Update
(
@UserName nvarchar(128),
@FirstName nvarchar(128),
@LastName nvarchar(128)
)
as
begin
update table1 set
FirstName = @FirstName,
LastName = @LastName
where UserName = @UserName
end
然后从您的应用程序中为每个用户调用它
关于SQL Server : update multiple rows dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288803/