swo*_*978 0 sql sql-server sql-server-2005
我有一个表,tblDocs有几列:
DocName varchar(50)
DocLocation int
Active int
DocID int
Run Code Online (Sandbox Code Playgroud)
表中的所有条目都有一个DocName和DocLocation. Active并且DocID是空白的.
我需要做的是tblDocs我需要检查每一行的值,DocLocation并根据我更新的值tblDocs,设置Active和DocID列.我以为我会用,CASE WHEN但我不确定 - 我不太了解sql.如果我使用c#或vb.net,它将相当于一个for each循环.
foreach row as DBRow in tblDocs
row.active = 1
row.docID = ID
next
Run Code Online (Sandbox Code Playgroud)
你是如何为SQL Server 2005做到这一点的?
UPDATE
从下面的几个回答中,听起来我会使用一个UPDATE声明.所以我可以通过做类似的事情来实现这一点
UPDATE tblDocs
SET docID =
CASE DocLocation
WHEN 1 THEN --do stuff
WHEN 3 THEN --do other stuff
Run Code Online (Sandbox Code Playgroud)
这将遍历tblDocs的所有行并更新DocID以基于DocLocation?
SQL的强大之处在于您不需要编写循环; 你只需要告诉它想要更新的内容.例如,如果您想将所有行设置为活动,那么您只需...
UPDATE tblDocs
SET Active = 1
Run Code Online (Sandbox Code Playgroud)
你想要这取决于位置,所以为什么不...
UPDATE tblDocs
SET Active = 1, DocID=42
WHERE DocLocation = 7
Run Code Online (Sandbox Code Playgroud)
(当然,替换适当的值.)可以编写单个查询来更新所有内容,但这取决于具体需要更改的内容.
| 归档时间: |
|
| 查看次数: |
3296 次 |
| 最近记录: |