1

メールアドレスでいくつかの行を更新しようとしています。T1.emailは、T2.nameに存在するT1.nameに基づいてT2.emailで更新されます。

現在、クエリは次のようになっています。

UPDATE T1
SET T1.email = T2.email
FROM Table1 T1
INNER JOIN Table2 T2 ON T1.name = T2.name
WHERE T1.name = T2.name
AND (Some conditions)
LIMIT 1398

ここでも同様の質問がありますが、構文エラーが発生します。 SQL UPDATE SET 1つの列を、別の列によって参照される関連テーブルの値と等しくなるように設定しますか?

また、ANYでアップデートしてみました。

UPDATE Table1
SET Table1.email = ANY
    (
        SELECT Table2.email FROM Table2 
        WHERE Table1.accountid = 901234 
        AND Table2.pid = 123 
        AND Table2.email IS NOT NULL 
    )

WHERE Table1.name IN
    (
        SELECT Table2.name FROM Table2
        WHERE Table1.accountid = 19574
        AND Table2.pid = 123 
        AND Table2.email IS NOT NULL
    ) 

LIMIT 1398

現在、これはエラー「SQLエラー(1242):サブクエリが複数の行を返します」を返します。

コピーアンドペーストジョブの始まりかもしれません!

4

1 に答える 1

1

UPDATE構文で詳しく説明されているように、MySQLの場合は次のようにします。

UPDATE Table1 T1 JOIN Table2 T2 USING (name)
SET    T1.email = T2.email
WHERE  (Some conditions)
LIMIT  1398
于 2012-12-21T22:49:39.907 に答える