我在两个对象(users => firm)之间有一个权限系统,表permissions
用于链接。现在我需要用第一个权限用户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
后说,该行不再更新。
但我不确定,也许它会对所有已连接的行运行查询,最后一行将保留。
如果没有,那么我如何修改查询以仅使用第一个匹配的结果进行更新?
答案 0 :(得分:1)
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