[英]SQL: Update a row and returning a column value with 1 query
我需要更新表中的一行,并从中获取列值。 我可以做到这一点
UPDATE Items SET Clicks = Clicks + 1 WHERE Id = @Id;
SELECT Name FROM Items WHERE Id = @Id
这会生成 2 个对表的计划/访问。 是否可以在 T-SQL 中修改 UPDATE 语句以更新并返回仅具有 1 个计划/访问权限的 Name 列?
我正在使用 C#、ADO.NET ExecuteScalar()
或ExecuteReader()
方法。
您想要OUTPUT子句
UPDATE Items SET Clicks = Clicks + 1
OUTPUT INSERTED.Name
WHERE Id = @Id
只访问一次表:
UPDATE Items SET Clicks = Clicks + 1 , @Name = Name WHERE Id = @Id;
select @name;
如果您使用 SQL Server 2005 及更高版本,则OUTPUT 子句非常适合此
我无法更新并返回select 语句中的一行。 即您不能使用其他答案中的选定值。
就我而言,我想在查询中使用选定的值。 我想出的解决方案是:
declare @NextId int
set @NextId = (select Setting from Settings where key = 'NextId')
select @NextId + ROW_NUMBER() over (order by SomeColumnOfYourTable) from YourTable
update Settings set Setting = Setting + @@ROWCOUNT
where key = 'NextId'
为此使用存储过程。
创建一个以@id 作为参数的存储过程,并同时执行这两项操作。 然后使用DbDataAdapter调用存储过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.