0

permissionsリンク用のテーブルを持つ2つのオブジェクト(ユーザー=>会社)の間に許可システムがあります。firms次に、最初のアクセス許可のユーザーIDでテーブルを更新する必要があります。私はこのクエリを行いました:

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

1つの会社が複数のリンクされたユーザーをハッシュする場合、最初に一致したユーザーまたは最後に一致したユーザーで更新されますか?

私のロジックは、最初の更新後にfirm_user_id != 0、その行はもう更新されないと言っています。

しかし、よくわかりません。結合されたすべての行に対してクエリが実行され、最後の行が残る可能性があります。

そうでない場合は、最初に一致した結果のみで更新するようにクエリを変更するにはどうすればよいですか?

4

1 に答える 1

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 
于 2012-10-22T11:24:08.237 に答える