-1
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,有时可能是 3,如上面的示例。

Select Stackoverflow.* From Stackoverflow Where GeneralId = 1001;

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

Id     GeneralId    Name        StateId
8       1001        stck         null

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

我只尝试编写伪代码。

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

不是吗?任何的想法。

谢谢你。

4

5 回答 5

2

你试一试

Update    Stackoverflow
Set StateId = 1
where GeneralId = 1000;

它将更新与 WHERE 子句对应的所有记录,无论它们是 1 还是 1000。

于 2012-09-03T14:58:05.287 回答
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);
于 2012-09-03T14:58:25.200 回答
1

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

Update Stackoverflow Set StateId = 1 WHERE GeneralID = 1000

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

于 2012-09-03T14:58:26.957 回答
1
Update    Stackoverflow
Set StateId = 1
where Id in (
//Your query if you want to customize
Select Id From Stackoverflow Where GeneralId = 1001;
)
于 2012-09-03T14:59:02.670 回答
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
于 2012-09-03T14:59:44.020 回答