在单个查询中选择并更新

时间:2010-07-19 10:34:08

标签: sql-server sql-server-2000

我有一个联系我们的表,其中包含名称emailid phoneno message repliedmessage作为字段,默认情况下,回复的消息字段在回复特定消息后为空我正在更新该字段但同时我也想要检索其他值也喜欢使用select语句的名称和emailid

1 个答案:

答案 0 :(得分:1)

您是说要更新多行还是只更新一行?

如果要更新多行,可以在临时表中选择受影响的行ID,执行更新,然后在更新的表上返回tmp表ID的连接。

如果您要更新单行,只需在更新后对该行执行选择。

同时尝试两个操作的可维护性是不好的,除非情况的逻辑在以后明确表明它是必需的。

您可以在表格上始终使用简单的LastUpdated DATETIME字段。然后你只需要一个变量,你设置为getdate()并在更新期间使用。更新后,只返回LastUpdated与datetime变量匹配的每一行。

例如:

declare @opTime datetime
set @opTime = getdate()

update .... (...., LastUpdated) values (....., @opTime)

select * from ... where LastUpdated = @opTime