【发布时间】:2011-06-08 02:24:25
【问题描述】:
如何使用表 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
【问题讨论】:
-
你到底想做什么?填充新列或保持数据一致?
-
如果这个
select StatusID from Y查询多行数据,你会怎么做? -
您发布的是最受支持的基于另一个值更新表的方法。 MySQL 和 SQL Server 是我所知道的唯一支持 UPDATE 语法中的 JOIN 的数据库。
-
我更新了问题,请看
-
有什么原因你不能备份数据库,运行它,如果一切都不好,然后恢复备份?
标签: mysql sql select sql-update