MySQL UPDATE ステートメントの「典型的な」落とし穴

MySQL UPDATE ステートメントの「典型的な」落とし穴

たとえば、次の図のような質問をした人がいました。

問題は次のように要約できます: MySQLでレコードupdateと、構文は正しいのですが、レコードが更新されません...

この問題に初めて遭遇したとき、私はこのステートメントをテスト ライブラリで直接実行しました。確かに問題があることがわかりましたが、開発の説明とは依然として異なっていました。ここでは、テスト データを使用してシミュレートします。

1. 問題のあるSQL文

実行後の記録は次のとおりです。

ご覧のとおり、結果は開発者が言ったように「効果がないようだ」というわけではなく、実際には効果があります。

なぜ?

構文に問題はないようです。MySQL の公式ドキュメントで更新構文を調べてみました。

assignment_listの形式がcol_name=valueのカンマ区切りリストであることから、開発者が求めていた複数フィールドの更新ステートメントは次のように記述する必要があることがすぐにわかりました。

戻ってもう一度試してください

案の定、今回は希望通りの結果が得られました!

概要: UPDATEステートメントで複数のフィールドを更新する場合、フィールド間で「AND」を使用することはできません。フィールドをコンマで区切る必要があります。

追記:後日時間ができたので振り返ってみると、なぜ「AND」で区切ったのにowner_code=0変な結果が出たのか不思議に思いました。何度も試した結果、次のことがわかりました。

は以下と同等です:

そして、( '43212' and owner_name='李四' )は論理式であり、 owner_nameは容易にわかります。したがって、この論理式の結果は false となり、 MySQLでは 0 に相当します。

これで、 MySQL UPDATEステートメントの「典型的な」落とし穴に関するこの記事は終わりです。MySQL MySQL UPDATEに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 実用的な MySQL + PostgreSQL バッチ挿入更新 insertOrUpdate
  • MySQL 更新セットとの違い
  • MySQL UPDATE ステートメントの非標準実装コード
  • mysql 更新ケース更新フィールド値が固定されていない操作
  • Mysql 更新マルチテーブル共同更新方法の概要
  • 更新とデータ整合性処理のためのMySQLトランザクション選択の説明

<<:  MySQL の Docker インストールと設定手順

>>:  円形グラデーションプログレスバー効果を実現する CSS サンプルコード

推薦する

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

Docker で FastDFS ファイル システムを構築する (マルチイメージ チュートリアル)

目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...

Linux で SSH 経由でリモート ファイルシステムをマウントする方法の詳細な説明

SSHFS の機能: FUSE(Linux向けの最高のユーザー空間ファイルシステムフレームワーク)を...

CSS で複数の境界線を実装するためのヒント

1. 複数の国境[1]背景: ボックスシャドウ、アウトライン使用シナリオの多様性を考慮すると、複数の...

1つの記事でJSONPの原理と応用を理解する

目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...

Linuxコマンド履歴の調整方法の詳細な説明

Linux システムの bash history コマンドは、以前に実行したコマンドを記憶し、再入力...

JavaScript イベントバブリング、イベントキャプチャ、イベント委任の詳細な説明

1. イベントバブリング: JavaScript イベント伝播のプロセスでは、要素でイベントがトリガ...

Vueコンポーネントの7つの通信方法についての深い理解

目次1. props/$emit導入コードサンプル2.Vスロット導入コードサンプル3.$refs/ ...

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

MySQL インデックス カバレッジの例の分析

この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

IMG での UserMap の使用例

usemap は <img> タグの属性であり、使用するイメージ マップの名前を指定する...

Reactプロジェクトで要素を使用する方法

React プロジェクトで要素フレームワークを使用するのは今回が初めてです。非常に単純な問題に遭遇し...

フレックスボックスレイアウトの最終行の左揃えの実装アイデア

フレックスレイアウトを使用すると、9つの正方形のグリッドであれば、図に示すように均等に分割できます。...

高度なクローラー - JS 自動レンダリングのための Scrapy_splash コンポーネントの使用

目次1. scrapy_splash とは何ですか? 2. scrapy_splashの役割3. s...