0

次のクエリを試すと:

UPDATE cache_implementation
SET parent_through_compared_id = ncp.nid, parent_through_feature_id = nfp.nid
FROM cache_implementation n
INNER JOIN cache_compare nc ON n.compared_id = nc.nid
INNER JOIN cache_implementation ncp ON (nc.nid = ncp.compared_id AND n.feature_id = ncp.feature_id)
INNER JOIN cache_feature nf ON n.feature_id = nf.nid
INNER JOIN cache_implementation nfp ON (nf.nid = nfp.feature_id AND n.compared_id = nfp.compared_id)

次のエラーがあります: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、3 行目の「FROM cache_implementation n INNER JOIN cache_compare nc ON n.compared_id = nc」付近で使用する正しい構文を確認してください。

このクエリを通じて、一括更新クエリを作成して、他のテーブルにある値で 2 つのフィールドを更新しようとしました。

4

2 に答える 2

1

MySQL の複数テーブルの更新ステートメントでは、SET句はテーブル参照の後に続きます。(これは、他のデータベースで使用される構文とは異なります。)

ステートメントを修正するには、その最初の行を削除し、SET を含む行を一番下に移動し、列参照をテーブル エイリアスで修飾し、に変更FROMUPDATEます。出来上がり。

UPDATEcache_implementation
FROM
cache_implementation n
INNER JOIN...
INNER JOIN... ...

SET n.col = expr, n.col2 = expr

ここに文書化されたマルチテーブル更新構文: http://dev.mysql.com/doc/refman/5.5/en/update.html

于 2013-07-26T16:29:54.417 に答える