Mysql多表UPDATE第一条记录

时间:2012-10-22 11:00:46

标签: mysql join sql-update

我在两个对象(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后说,该行不再更新。

但我不确定,也许它会对所有已连接的行运行查询,最后一行将保留。

如果没有,那么我如何修改查询以仅使用第一个匹配的结果进行更新?

1 个答案:

答案 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