9

次のようなクエリがあります。

update  table
set     status = 1
where   status = 2;     

しかし、これを上位 400 に対してのみ行いたいと思います。「制限 0, 400」を追加しようとしましたが (クエリで行うように)、うまくいきませんでした。私はいくつかの検索を行いましたが、mysql は SQL Server のように TOP(n) コマンドをサポートしていないようです。

私はこれをどのように行うか考えていますか?

編集:将来の参考のために、選択に次のスタイルを使用していましたが、うまくいきました:

select  * 
from    table
where   ... limit 0, 400;

しかし、更新では、何らかの理由で「0」では機能しません。私はこの一貫性のない曖昧な動作を考えますが、まあまあです。

4

3 に答える 3

28
UPDATE  table
SET     status = 1
WHERE   status = 2
ORDER BY id
LIMIT 400

チェックインMySQL 5.2.0-falcon-alpha-community-nt-log、動作確認済み。

あなたの場合、それ0LIMIT 0, 400機能しません。

UPDATEので下限を使用することはできませんLIMIT

于 2009-04-07T15:50:19.790 に答える
3

これを試して:

update  table
set     status = 1
where   status = 2
LIMIT 400

order by 句を入れることもできます

update  table
set     status = 1
where   status = 2
ORDER BY id
LIMIT 400
于 2009-04-07T15:48:17.237 に答える