序文今日は、非常に典型的な MySQL の「落とし穴」についてお話しします。 MySQL の UPDATE ステートメントは、このように記述しないでください。 原因最近、いくつかの開発者が DingTalk で次のような質問をしてきました。 問題は次のように要約できます: MySQL でレコードを更新する場合、構文は正しいのですが、レコードは更新されません... 結論: UPDATE ステートメントで複数のフィールドを更新する場合、フィールド間で「AND」を使用することはできません。カンマで区切る必要があります。 現象この問題に初めて遭遇したとき、私はこのステートメントを取得してテスト ライブラリで直接実行しました。確かに問題があることがわかりましたが、開発の説明とは依然として異なっていました。ここでは、テスト データを使用してシミュレートします。 問題のある SQL ステートメント: アプリを更新して、owner_code='43212'、owner_name='李四'を設定します。 owner_code='13245' かつ owner_name='张三'; 実行前の記録は次のとおりです。 実行後の記録は以下のとおりです。 ご覧のとおり、結果は開発者が言ったように「効果がないようだ」というわけではなく、実際には効果があります。
なぜ?分析構文に問題はないようです。MySQL の公式ドキュメントで更新構文を調べてみました。 assignment_list の形式が col_name=value のカンマ区切りリストであることから、開発者が求めていた複数フィールドの更新ステートメントは次のように記述する必要があることがすぐにわかりました。 アプリを更新し、owner_code='43212'、owner_name='李四'を設定します。 owner_code='13245' かつ owner_name='张三'; 戻ってもう一度試してください: 案の定、今回は希望通りの結果が得られました! 概要: UPDATE ステートメントで複数のフィールドを更新する場合、フィールド間で「AND」を使用することはできません。フィールドをコンマで区切る必要があります。 追記:後日時間ができたので振り返ってみると、なぜ「AND」で区切ったのにowner_code=0という変な結果が出たのか不思議に思いました。 何度も試した結果、次のことがわかりました。 アプリを更新して、owner_code='43212'、owner_name='李四'を設定します。 owner_code='13245' かつ owner_name='张三'; は以下と同等です: アプリを更新して、owner_code=('43212' and owner_name='李四') を設定します。 owner_code='13245' かつ owner_name='张三'; そして、('43212' and owner_name='李四') は論理式であり、owner_name が '李四' ではないことは容易にわかります。 したがって、この論理式の結果は false となり、MySQL では 0 に相当します。 要約するこれで、MySQL で更新ステートメントを絶対に記述しない方法に関するこの記事は終了です。MySQL で更新ステートメントを記述する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
WordPress のマルチサイト機能を使用すると、1 つの WordPress プログラムをインス...
目次序文以前のバージョンイテレータパターンイテレータファクトリ関数イテレータプロトコル最後に序文多く...
多くの人が、ウェブサイト上のテキストはデザインする必要があるのかと疑問に思うかもしれません。多く...
目次クラス void のポイントES6 矢印関数ヴュートファイvue-cli非同期と同期実行と展開ヒ...
Linux chmodコマンドを使用して、ターゲット ファイルにアクセス、読み取り、書き込み、または...
序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...
CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...
この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....
目次スプリングブートDocker spring-boot-maven-プラグインSpotify Ma...
1.位置:固定一部の Web サイトの右下隅にあるポップアップ ウィンドウなどの、ブラウザーを基準と...
原理としては、まずボタン付きの div を記述し、次に画面のサイズに応じて自動的に適応してキーボード...
目次序文範囲1. スコープとは何ですか? 2. [[スコープ]] プロパティ3. スコープチェーン4...
Dockerネットワーク管理とコンテナIP設定に基づいてNginxロードバランシングを実装するすべて...
centos8 ディストリビューションは、BaseOS および AppStream リポジトリを通じ...
CSS 表示プロパティ注: !DOCTYPE が指定されている場合、Internet Explore...