2012-10-22 4 views
0

두 개의 개체 (사용자 => 회사) 사이에 권한 시스템이 있습니다 (테이블은 permissions). 이제 첫 번째 권한 사용자 ID로 firms 테이블을 업데이트해야합니다. 나는이 질문을했다 :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 
관련 문제