使用选择更新
如何使用表 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
How can I update StatusID in Table X using Table Y?
Table X has SourceID and old StatusID
Table Y has SourceID and new StatusID
update x
set StatusID= (select StatusID from Y)
where
SourceID = (select SourceID from Y)
Is this right? I'm afraid to run the query in case it messes everything up....
I am using joins to get the StatusID for table Y, so I think I need to use a SELECT
.
This is how I'm getting SourceID and StatusID for table Y
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这可能会更简单
如果是 Access,那么您可以使用
This could be simpler
If it is Access, then you could use
我不确定这是否有效。尝试:
ETA:这应该在 PostgreSQL 中工作,但我不确定其他 SQL 方言。
I'm not sure that works. Try:
ETA: This should work in PostgreSQL, but I'm not sure about other SQL dialects.
已更新
在 SQL Server 中,您可以这样做:
在更新的问题中,现在您只是执行
SELECT
,它根本不会更新任何记录。您使用什么数据库引擎?UPDATED
In SQL Server you can do this:
In your updated question, now you are just doing a
SELECT
, it's not gonna update any record at all. What database enginge are you using?