ホームページ > データベース > mysql チュートリアル > MySQL の「UPDATE」ステートメントが 2 部構成の「LIMIT」句をサポートしないのはなぜですか?

MySQL の「UPDATE」ステートメントが 2 部構成の「LIMIT」句をサポートしないのはなぜですか?

Susan Sarandon
リリース: 2024-12-31 21:19:19
オリジナル
296 人が閲覧しました

Why Doesn't MySQL's `UPDATE` Statement Support a Two-Part `LIMIT` Clause?

MySQL: 複数行更新における LIMIT の問題

MySQL では、LIMIT 句を使用して複数の行を更新しようとすると、エラーが発生する可能性があります。次のクエリについて考えてみます。

UPDATE messages SET test_read=1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5, 5;
ログイン後にコピー

このクエリは、指定された条件に基づいて 5 行を更新し、最初の 5 行 (LIMIT 5, 5) をスキップすることを目的としています。ただし、これによりエラーが発生します。

2 番目の LIMIT 句 (LIMIT 5) を含まないクエリの作業バージョンでは、条件を満たす最初の 5 行が正常に更新されます。このエラーは、MySQL では更新ステートメント内で 2 番目の LIMIT を指定できないために発生します。

推奨される代替手段

この制限を克服するには、次の回避策が推奨されます。

UPDATE messages SET test_read=1
WHERE id IN (
SELECT id FROM (
SELECT id FROM messages
ORDER BY date_added DESC
LIMIT 5, 5
) tmp
);
ログイン後にコピー

このクエリは、最初にサブクエリを使用して目的の行を特定し、次に適切な行を更新することで同じ結果を実現します。 idフィールドに基づいて。この方法により、MySQL での正確な行の選択と更新が可能になります。

以上がMySQL の「UPDATE」ステートメントが 2 部構成の「LIMIT」句をサポートしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート