繁体   English   中英

SQL:使用 1 个查询更新一行并返回一列值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM