今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステートメントの違いを紹介します。この問題に注意を払わないと、予期しない結果につながる可能性があります。 まず、簡単なサンプル テーブルを作成しましょう。 テーブルt1を作成します( id int、 列1 int, 列2 int ); t1 値 (1, 1, 1) に挿入します。 t1から*を選択します。 id|列1|列2| --|----|----| 1| 1| 1| ———————————————— 著作権声明: この記事は、CSDN ブロガー「髪を切らないトニー先生」によるオリジナル記事であり、CC 4.0 BY-SA 著作権契約に準拠しています。転載の際は、元のソース リンクとこの声明を添付してください。 オリジナルリンク: https://blog.csdn.net/horses/article/details/110238573CREATE TABLE t1( id int、 列1 int, 列2 int ); t1 値 (1, 1, 1) に挿入します。 t1から*を選択します。 id|列1|列2| --|----|----| 1| 1| 1| 次に、テーブル t1 のデータを更新します。 アップデート t1 SET col1 = col1 + 1、 列2 = 列1 ここで、id = 1; 列1、列2を選択 t1から; クエリ ステートメントによって返される col1 フィールドと col2 フィールドの結果は何ですか?
MySQL の場合、UPDATE ステートメントが式 (col2 = col1) で以前に更新された列 (col1) を使用する場合、元の値 (1) の代わりに列の更新された値 (2) が使用されます。 MySQL でのこの実装は SQL 標準とは異なることに注意してください。また、実装が SQL 標準に準拠している Oracle、Microsoft SQL Server、PostgreSQL、SQLite などの他のデータベースもテストしました。 MySQL で標準 SQL と同じ効果を実現したい場合は、UPDATE ステートメントで更新されるフィールドの順序を調整できます。例えば: アップデート t1 SET col2 = col1、 列1 = 列1 + 1 ここで、id = 1; この方法では、col1 の古い値 (1) を使用して、col2 列が col1 の前に更新され、結果は SQL 標準と一致します。 結論: 一般に、UPDATE ステートメントを記述する場合、複数のフィールドの更新順序を気にする必要はありません。ただし、MySQL の実装の問題により、文法の順序に注意する必要があります。 これで、MySQL UPDATE ステートメントの非標準実装に関するこの記事は終了です。MySQL UPDATE ステートメントに関連する非標準コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。
>>: Vue は無限ロードウォーターフォールフローを実装します
序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...
目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....
目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...
まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...
以前、UDP を使い始めるために簡単な UDP サーバーとクライアントの例を作成しましたが、実際に使...
<meta name="viewport" content="...
この記事では、マスク レイヤーの中空化を実現する 4 つの方法を紹介します。みんなと共有し、自分用の...
4 つのネットワーク タイプ:なし: コンテナのネットワーク機能を一切設定しません。--net=no...
1. システム環境yum updateアップグレード後のシステムバージョンは[root@yl-web...
コンポーネントの props (props はオブジェクトです)機能: コンポーネントに渡されたデー...
次のような製品部品表があります。一部 部品ID 部品タイプ 製品ID ---------------...
Linuxアラーム機能の紹介上記のコード: #include <stdio.h> #in...
Node.js では、.js ファイルは完全なスコープ (モジュール) です。したがって、var に...
目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...
この記事では、jQuery Canvasの描画画像検証コードの具体的なコードを例として紹介します。具...