我有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
.
.
等等......
是否可以在一个查询中执行此操作?
答案 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
...
这是我认为除了前面提到的存储过程之外的最接近的单个语句。你有什么理由需要在“一个声明”中吗?
仅仅因为列共享相同的名称,列仍然存储为单独的对象,并且必须明确告知计算机每列属于哪个表。