我有一个在2个表上进行联合的查询。我想更新结果列。
类似的东西:
LopNr TKOST year month
1 22 2006 7
由于
答案 0 :(得分:1)
由于它来自两个不同的表,您需要找出结果来自哪个表。您可以通过向查询添加列来执行此操作,然后根据列值确定要更新的表。您已经使用srv列执行此操作了!
update语句必须位于原始表上,因为union仅由查询生成。它不是数据库中的物理表。
通过扩展此逻辑,要回答标题中的问题,您无法对UPDATE
查询的结果集执行SELECT
。
答案 1 :(得分:1)
只需运行两个更新:
update px_conversions_srv10
set status = 8
where adv_transaction_id in (1333764016);
update px_conversions_srv12
set status = 8
where adv_transaction_id in (1333764016);
如果您希望它们在同一时间生效,您可以在单个事务中运行它们。
注意:拥有多个具有相同列的表通常是数据库设计不佳的标志。这可能是有用的原因(例如,表具有不同的复制要求或不同的安全要求)。但是,一般来说,单个表是一个更好的主意。
答案 2 :(得分:0)
也许创建一个视图表然后更新它:
CREATE VIEW ff AS
select * from(
select a.*,'10' as srv from px_conversions_srv10 a
union all
select b.*,'12' as srv from px_conversions_srv12 b
) as ff where ff.adv_transaction_id in(1333764016);
update ff SET ff.`status`=8;