table1 のフィールドを table2 の別のフィールドで更新したいのですが、次のクエリを書きましたが、うまくいきません。
UPDATE tempdata A
SET A.new_user_id =
(SELECT B.id FROM user B
WHERE A.usr_email = B.usr_email)
「#1242 - サブクエリが複数の行を返します」というエラーが発生しています。誰でも私を助けてください。
UPDATE tempdata A, user B
SET A.new_user_id = B.id
WHERE A.usr_email = B.usr_email
これは、このシーンリオを処理する1つの方法でもあります
UPDATE A
SET A.new_user_id = B.id
FROM tempdata A
INNER JOIN user B ON A.usr_email = B.usr_email
update ステートメントであっても、テーブルを結合できます。
UPDATE tempdata A
INNER JOIN user B
ON A.usr_email = B.usr_email
SET A.new_user_id = B.id
エラーは、テーブル user にフィールド usr_email が tempdata のものと等しい行が複数あることを意味することに注意してください。Salil が提案する LIMIT 1 を使用して実際の更新ステートメントを実行する前に、重複がないか確認してください