私はMYSQLを使い始めたばかりであり、解決できず、このフォーラムで非常に多くの回答があったとしても、このステートメントのエラーを特定できません。 MYSQLデータベースを使用しています。
私は2つのテーブルを持っています。Ratemasterとレートで、顧客は異なるレートの1つの製品を持つことができます。このため、顧客フィールドと製品フィールドの重複があり、レートフィールドのみが変更されます。これで、テーブルレートマスターにはすべてのフィールド(ID、顧客コード、製品、レート、ユーザー)がありますが、テーブルレートにはID、カストコード、レート、ユーザーしかありません。 -userフィールドは、session_userを確認するためのものです。
これで、テーブルRatemasterには3つのレコードがあり、Rateフィールドが空であることを除いて、すべてのフィールド値は同じです。テーブルレートには異なるレートがあります。レートテーブルのレートマスターですべてのレートを更新する必要があります。 UPDATE
およびLIMIT
mysqlコマンドでこれを行うことはできません。次のようなエラーが発生します。
UPDATEおよびLIMITの誤った使用法
UPDATE Ratemaster, Rates
SET Ratemaster.Rate=Rates.Rate
WHERE Ratemaster.user=Rates.user
LIMIT 1
通常、LIMIT
およびORDER
をUPDATE
ステートメントで使用できますが、 MySQLドキュメント12.2に記載されているように、使用できない場合があります。 10。 UPDATE構文 :
複数テーブル構文の場合、UPDATEは、条件を満たすtable_referencesで指定された各テーブルの行を更新します。この場合、ORDER BYとLIMITは使用できません。
以下を試してください:
UPDATE Ratemaster
SET Ratemaster.Rate =
(
SELECT Rates.Rate
FROM Rates
WHERE Ratemaster.user = Rates.user
ORDER BY Rates.id
LIMIT 1
)
サラムこの方法を使用して、正しく機能することができます。
UPDATE Ratemaster, Rates
SET Ratemaster.Rate=Rates.Rate
WHERE Ratemaster.user=Rates.user
ORDER BY Rates.id
LIMIT 1
MySQLのマルチテーブル更新でORDER BYおよびLIMITを使用する方法に関する記事を読む
複数テーブル構文の場合、UPDATEは、条件を満たすtable_referencesで指定された各テーブルの行を更新します。この場合、ORDER BYとLIMITは使用できません。
完全に機能する
UPDATE table SET Sing='p' ORDER BY sr_no LIMIT 10;