如何使用表Y更新表X中的StatusID?
表X具有SourceID和旧的StatusID
表Y具有SourceID和新StatusID
update x
set StatusID= (select StatusID from Y)
where
SourceID = (select SourceID from Y)
这是对的吗?我害怕运行查询以防万一将其搞砸....
我正在使用联接来获取表Y的StatusID,所以我认为我需要使用SELECT
。
这就是我为表Y获取SourceID和StatusID的方式
select t2.Sourceid, t3.ActionID
from tblSource t2
right join Y t1 on t1.BaselineSourceKey= t2.tempSourceID
right join lkuActionCode t3
on t3.actioncode = CASE
WHEN t1.actionCode = 'R' THEN 'N'
WHEN t1.actionCode = 'B' THEN 'R'
WHEN t1.actionCode = 'A' THEN 'R'
WHEN t1.actionCode = 'E' THEN 'N'
WHEN t1.actionCode = 'F' THEN 'S'
WHEN t1.actionCode = 'G' THEN 'S'
WHEN t1.actionCode = 'K' THEN 'DP'
WHEN t1.actionCode = 'Q' THEN 'C'
WHEN t1.actionCode = 'S' THEN 'AER'
WHEN t1.actionCode = 'T' THEN 'AEN'
WHEN t1.actionCode = 'U' THEN 'C'
WHEN t1.actionCode = 'V' THEN 'UR'
WHEN t1.actionCode = 'W' THEN 'R'
END
where actionid <> 10 and actionid <> 8 and actionid <> 3
答案 0 :(得分:3)
这可能更简单
update x
set StatusID= Y.StatusID
from Y
where y.SourceID = X.SourceID
如果是Access,则可以使用
update x inner join y on y.sourceid=x.sourceid
set x.statusid = y.statusid
答案 1 :(得分:2)
我不确定是否有效。尝试:
update x set StatusID=Y.StatusID
from Y where (x.SourceID=Y.SourceID);
ETA:这应该适用于PostgreSQL,但我不确定其他SQL方言。
答案 2 :(得分:2)
update x
set StatusID = y.StatusID
from x
join y on x.SourceID= y.SourceID
答案 3 :(得分:1)
<强>已更新强>
在SQL Server中,您可以执行此操作:
UPDATE A
SET A.StatusID= B.StatusId
FROM TableX AS A
JOIN TableY AS B
ON A.SourceID = B.SourceID
在您更新的问题中,现在您只是在做SELECT
,它根本不会更新任何记录。您使用的数据库是什么?
答案 4 :(得分:1)
update x, y
set x.StatusID=y.StatusID
where x.SourceID=y.SourceID