更新多个表中的公共字段

时间:2014-05-06 08:41:03

标签: mysql sql

我有10个表,都属于用户,所以user_id出现在所有表中,表中还有另一个字段'company_id'。

现在我想将一些用户的关联移交给另一个用户。

个人查询:

Update table1 set user_id = XX where user_id = YY and company_id = ZZ
Update table2 set user_id = XX where user_id = YY and company_id = ZZ
Update table3 set user_id = XX where user_id = YY and company_id = ZZ
.
.
等等...... 是否可以在一个查询中执行此操作?

1 个答案:

答案 0 :(得分:0)

如果你的10个更新中的user_id和company_id是一致的,你可以将它们抽象为局部变量(你可能已经这样做了)

DECLARE @olduser BIGINT, @newuser BIGINT, @company BIGINT UPDATE table1 SET user_id = @newuser WHERE user_id = @olduser and company_id = @company UPDATE table2 SET user_id = @newuser WHERE user_id = @olduser and company_id = @company ...

这是我认为除了前面提到的存储过程之外的最接近的单个语句。你有什么理由需要在“一个声明”中吗?

仅仅因为列共享相同的名称,列仍然存储为单独的对象,并且必须明确告知计算机每列属于哪个表。