web-dev-qa-db-ja.com

ORDER BYとLIMITを使用したUPDATEがMYSQLで機能しない

私は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
12
user1114409

通常、LIMITおよびORDERUPDATEステートメントで使用できますが、 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
)
18
Sascha Galley

サラムこの方法を使用して、正しく機能することができます。

UPDATE Ratemaster, Rates 
SET Ratemaster.Rate=Rates.Rate 
WHERE Ratemaster.user=Rates.user 
ORDER BY Rates.id
LIMIT 1
7

MySQLのマルチテーブル更新でORDER BYおよびLIMITを使用する方法に関する記事を読む

複数テーブル構文の場合、UPDATEは、条件を満たすtable_referencesで指定された各テーブルの行を更新します。この場合、ORDER BYとLIMITは使用できません。

1
John Woo

完全に機能する

UPDATE table  SET Sing='p'  ORDER BY sr_no  LIMIT 10;  
1
Sandeep Sharma