2012-09-03 72 views
-1
Select Stackoverflow.* From Stackoverflow Where GeneralId = 1000; 

上面的SQL返回3條記錄,如:如何更新MS SQL中的多條記錄?

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?" 

是不是?任何想法。

謝謝。

回答

2

對於第一個是:

對於第二個:

UPDATE Stackoverflow 
Set StateId = 1 
where GeneralId = 1001; 

對他們倆的:

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

試試看

Update Stackoverflow 
Set StateId = 1 
where GeneralId = 1000; 

它將更新對應的WHERE子句中的所有記錄,他們應該是1或1000

1

,如果你想設置的WHERE子句相同的值選擇的所有記錄,你只寫

Update Stackoverflow Set StateId = 1 WHERE GeneralID = 1000 

和所有三個記錄(或只有一個時GeneralID = 1001)將更新爲新值 UPDATE語句處理由WHERE子句檢索的記錄集。

1
Update Stackoverflow 
Set StateId = 1 
where Id in (
//Your query if you want to customize 
Select Id From Stackoverflow Where GeneralId = 1001; 
) 
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