ホームページ > データベース > mysql チュートリアル > ## MySQL の複数テーブル UPDATE クエリで LIMIT 句が使用できないのはなぜですか?

## MySQL の複数テーブル UPDATE クエリで LIMIT 句が使用できないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-10-25 10:20:02
オリジナル
770 人が閲覧しました

##  Why is LIMIT Clause Not Allowed in Multi-Table UPDATE Queries in MySQL?

MySQL エラー: UPDATE と LIMIT の不正な使用法

MySQL で複数のテーブルに対して UPDATE クエリを実行すると、次のような理由でエラーが発生することがあります。 UPDATE と LIMIT の使用法が間違っています。この問題は、ON 条件がテーブルを結合し、LIMIT 句が使用されている複数のテーブルのレコードを更新しようとすると発生します。

UPDATE に関する MySQL ドキュメントによると、「複数テーブルの構文の場合、UPDATE は行を更新します」 table_references で指定された条件を満たす各テーブルで、ORDER BY と LIMIT は使用できません。

提供された MySQL コードでは、クエリは "users" と "contact_info" の行を更新しようとします。 " 結合条件に基づいたテーブル。ただし、LIMIT 句は、更新される行の数を 1 に制限するために使用されます。これは、複数テーブルの UPDATE クエリでは許可されません。

この問題を解決するには、クエリから LIMIT 句を削除します。これにより、UPDATE ステートメントは、指定された条件を満たす結合テーブル内のすべての行に影響を与えることができます。変更されたコードは次のようになります。

$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "')";
$r = mysqli_query ($mysqli, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($mysqli));
ログイン後にコピー

LIMIT 句を削除すると、クエリは、電子メール アドレスとアクティブ ステータスが指定されたものと一致する "users" テーブルと "contact_info" テーブルの両方のすべての行を更新します。値。

以上が## MySQL の複数テーブル UPDATE クエリで LIMIT 句が使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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