如何在一个查询中选择和更新?

时间:2013-07-19 15:45:57

标签: sql sql-server sql-server-2005

我需要返回一行:

.NET[tableReturn] = select top(1) * from [table] where x = 0 order by desc

但与此同时我需要更新它:

update [table] set x = 1 where [id] = .NET[tableReturn].[id]

并需要此行的所有数据

可以在同一个查询中吗?

4 个答案:

答案 0 :(得分:9)

解决这个问题!

DECLARE @id int;
SET @id = (select top(1) id from [table] where [x] = 0 order by id desc);

select * from [table] where id = @id;
update [table] set [x] = 20 where id = @id;

:d

答案 1 :(得分:1)

试试这个

with cte as (select top(1) * from [table] where x=0 order by 1 desc)
update [table] set x=1 from cte join [table] c on c.id =cte.id;

答案 2 :(得分:0)

使用存储过程。在存储过程中,您可以根据需要执行任意数量的查询 没有它,您将不得不独立调用多个查询。

希望这会有所帮助。

答案 3 :(得分:0)

尝试以下查询以使用单个查询更新列。

更新[table]设置x = 1其中x =(从[table]中选择cte.x,其中x = 0顺序x desc)cte)

注意: - 但更新的列不应该是标识列