我在两个对象(用户 => 公司)之间有一个权限系统,其中有用于链接的表权限
。现在我需要使用第一权限用户 ID 更新 firms
表。我提出了这个查询:
UPDATE parim_firms, parim_permissions
SET parim_firms.firm_user_id = parim_permissions.permission_a_id
WHERE parim_firms.firm_user_id = 0
AND parim_firms.firm_id = parim_permissions.permission_b_id
现在,如果一个公司散列多个链接用户,那么它会使用第一个或最后一个匹配的用户进行更新吗?
我的逻辑是在第一次更新firm_user_id != 0
后,该行不再更新。
但我不确定,也许它是否对所有连接的行运行查询,最后一行将保留。
如果没有,那么我如何修改查询以仅使用第一个匹配结果进行更新?
最佳答案
UPDATE parim_firms
SET parim_firms.firm_user_id =
(
select parim_permissions.permission_a_id from parim_permissions
WHERE parim_firms.firm_id = 0
AND parim_firms.firm_id = parim_permissions.permission_b_id
)
或
update parim_firms a
set a.firm_user_id = b.permission_a_id
from parim_permissions b
WHERE parim_firms.firm_id = 0
AND parim_firms.firm_id = parim_permissions.permission_b_id
关于Mysql多表UPDATE第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010046/