我有2个表需要更新:
表A包括:ID,personName,日期,状态
表B包括:PersonID,日期,状态
对于A中的每一行,B中可以有多行具有相同的personID
我需要"循环"来自状态= 2的A的所有结果,并将日期和状态更新为1.
此外,对于A中status = 2的每一行,我需要更新B中具有相同personID的所有行(即A.ID == B.PersonID) - 我还需要将日期和状态更新为1.
所以基本上,如果我以编程方式(或算法)执行此操作,那就是这样的:
Foreach(var itemA in A)
If (itemA.status = 2)
itemA.status to 1
itemA.date = GetDate()
foreach(var itemB in B)
if(itemB.PersonID == itemA.ID && itemB.status != 2 )
Change itemB.status to 1
Change itemB.date = GetDate()
Run Code Online (Sandbox Code Playgroud)
我知道如何使用以下sql语句更新B中的所有行:
UPDATE
B
SET
status = 1,
date = GETDATE()
FROM
B
INNER JOIN
A
ON
B.PersonID = A.ID
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何更新表A,因为更新语句中不能有多个表
谢谢你的帮助
以下是使用该output子句的示例:
declare @ids table (id int);
update table1
set status = 1
output inserted.id into @ids
where status = 2;
update table2
set status = 1,
date = getdate()
where personid in (select id from @ids);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30928 次 |
| 最近记录: |