-1

table1 のフィールドを table2 の別のフィールドで更新したいのですが、次のクエリを書きましたが、うまくいきません。

UPDATE tempdata A
  SET A.new_user_id =
  (SELECT B.id FROM user B
  WHERE A.usr_email = B.usr_email)

「#1242 - サブクエリが複数の行を返します」というエラーが発生しています。誰でも私を助けてください。

4

4 に答える 4

2
UPDATE tempdata A, user B
  SET A.new_user_id = B.id
  WHERE A.usr_email = B.usr_email
于 2012-10-30T11:25:28.467 に答える
1

これは、このシーンリオを処理する1つの方法でもあります

UPDATE  A  
SET A.new_user_id = B.id
FROM tempdata A 
INNER JOIN user B ON A.usr_email = B.usr_email
于 2012-10-30T12:33:55.417 に答える
1

update ステートメントであっても、テーブルを結合できます。

UPDATE tempdata A
       INNER JOIN user B
          ON A.usr_email = B.usr_email
SET A.new_user_id = B.id
于 2012-10-30T11:25:41.947 に答える
1

エラーは、テーブル user にフィールド usr_email が tempdata のものと等しい行が複数あることを意味することに注意してください。Salil が提案する LIMIT 1 を使用して実際の更新ステートメントを実行する前に、重複がないか確認してください

于 2012-10-30T11:26:59.433 に答える