2012-10-22 58 views
0

我有两个对象(用户=>行)之间的权限系统与表permissions链接。现在我需要更新firms表与第一个权限用户ID。我做了这个查询:Mysql多表UPDATE第一条记录

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