如何在MS SQL中更新多条记录?

时间:2012-09-03 14:56:33

标签: sql sql-server-2008

Select Stackoverflow.* From Stackoverflow Where GeneralId = 1000;

上面的sql返回3条记录,如:

Id     GeneralId    Name             StateId
1       1000        stack             null
2       1000        stackover         null
3       1000        stackoverflow     null

我想更新返回记录的StateId。

另一方面

有时候记录的数量可能是1,有时候就像上面的例子一样。

Select Stackoverflow.* From Stackoverflow Where GeneralId = 1001;

上面的sql语句只返回一条记录。

Id     GeneralId    Name        StateId
8       1001        stck         null

那么如何更新这些返回的记录呢。 我认为应该有一个从0到记录计数和循环的循环

我只尝试编写Pseudocode。

Update    Stackoverflow
Set StateId = 1
where = "loop as I mentioned should be come?"

不是吗?任何想法。

谢谢。

5 个答案:

答案 0 :(得分:2)

试试

Update    Stackoverflow
Set StateId = 1
where GeneralId = 1000;

它将更新与WHERE子句相对应的所有记录,如果它们是1或1000。

答案 1 :(得分:2)

第一个是:

UPDATE Stackoverflow
Set StateId = 1
where GeneralId = 1000;

对于第二个:

UPDATE Stackoverflow
Set StateId = 1
where GeneralId = 1001;

对于他们两人:

UPDATE Stackoverflow
Set StateId = 1
where GeneralId IN (1000,1001);

答案 2 :(得分:1)

如果要将WHERE子句选择的所有记录设置为您刚编写的相同值

Update Stackoverflow Set StateId = 1 WHERE GeneralID = 1000

将使用新值更新所有三个记录(或GeneralID = 1001时的唯一记录) UPDATE语句适用于WHERE子句检索的记录集。

答案 3 :(得分:1)

Update    Stackoverflow
Set StateId = 1
where Id in (
//Your query if you want to customize
Select Id From Stackoverflow Where GeneralId = 1001;
)

答案 4 :(得分:1)

考虑使用SQL Server的update ... from语法,例如:

update  tbl1
set     stateid = 1
from    ... your query here ...

例如:

update  tbl1
set     stateid = 1
from    Stackoverflow as tbl1
where   tbl1.GeneralId = 1000