今日、null 値をテストしていたところ、小さな問題が見つかりました。ここに記録しました。以前にも遭遇したことがあるでしょうか。 何が起こっているのか、ご説明します。テーブル内の値をフィルタリングする場合、age=2 の列を削除してから、残りの列の情報を表示する必要があります。この操作は比較的簡単に思えます。テーブルを使用してプロセスをシミュレートします。 テーブル「test」を作成します( `id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) デフォルト NULL, `score` varchar(20) NOT NULL DEFAULT '', 主キー (`id`)、 キー `idx_score` (`score`) ) エンジン=InnoDB AUTO_INCREMENT=12 デフォルト文字セット=utf8 テーブル構造は上記のとおりです。id フィールドと score フィールドは両方とも not null 制約の対象ですが、age フィールドはこの制約の対象ではありません。次のようにデータを挿入します。 mysql:yeyztest 23:32:57>>テストから*を選択します。 +----+------+-------+ | ID | 年齢 | スコア | +----+------+-------+ | 1 | 1 | 5 | | 2 | 2 | 10 | | 5 | 5 | 25 | | 8 | 8 | 40 | | 9 | 2 | 45 | | 10 | 5 | 50 | | 11 | 8 | 55 | +----+------+-------+ セット内の行数は 7 です (0.00 秒) 現在のデータ セットは完了しており、各フィールドには値があります。次に、次の SQL ステートメントを使用して、指定されたレコードを照会します。 ID が 0 のテストから * を選択します。 = 2; 結果を見てみましょう: mysql:yeyztest 23:33:14>>age!=2 の場合、test から * を選択します。 +----+------+-------+ | ID | 年齢 | スコア | +----+------+-------+ | 1 | 1 | 5 | | 5 | 5 | 25 | | 8 | 8 | 40 | | 10 | 5 | 50 | | 11 | 8 | 55 | +----+------+-------+ セット内の行数は 5 です (0.00 秒) この時点で、2 つのレコードを挿入します。 mysql:yeyztest 23:33:17>>テスト(id,score)値(12,60)に挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql:yeyztest 23:34:02>>テスト(id,score)値(13,65)に挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql:yeyztest 23:34:10>>テストから*を選択します。 +----+------+-------+ | ID | 年齢 | スコア | +----+------+-------+ | 1 | 1 | 5 | | 2 | 2 | 10 | | 5 | 5 | 25 | | 8 | 8 | 40 | | 9 | 2 | 45 | | 10 | 5 | 50 | | 11 | 8 | 55 | | 12 | NULL | 60 | | 13 | NULL | 65 | +----+------+-------+ セット内の行数は 9 です (0.00 秒) 上記のステートメントを使用して再度クエリを実行すると、次のような結果が表示されます。 mysql:yeyztest 23:34:15>>age!=2 の場合、test から * を選択します。 +----+------+-------+ | ID | 年齢 | スコア | +----+------+-------+ | 1 | 1 | 5 | | 5 | 5 | 25 | | 8 | 8 | 40 | | 10 | 5 | 50 | | 11 | 8 | 55 | +----+------+-------+ セット内の行数は 5 です (0.00 秒) つまり、レコードに null 値が含まれている場合は、逆一致の age を使用します。 =2 では完全なクエリ結果を取得するには不十分であり、明らかに期待どおりではありません。 実は、この問題は前回の記事でも触れました。データ レコードでは、NULL 値フィールドと一般フィールドは一緒に保存されません。NULL 値フィールドは、NULL 値リストに保存されます。これにより、検索時に不一致が発生します。これは比較的重要なポイントであり、皆様のお役に立てば幸いです。 ちなみに、テスト環境は MySQL バージョン 5.7.16 です。 上記は、MySQL の null 値に関する小さな問題の詳細です。MySQL null 値の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 表のセルの内容が超過した場合に省略記号効果を表示する(実装コード)
>>: JavaScript の構造化代入の一般的なシナリオと例 5 つ
最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...
目次結果を一目で見るハート効果デジタルスクロールアニメーションアニメーションのように結果を一目で見る...
質問:最近、プロジェクトの統計を行っていたときに、テーブルを上下にスクロールしたときにテーブルの先頭...
まとめ:以下のように、CSS で指定した行にマウスを置いたときに行全体の色を変更する方法を示します。...
目次序文インストールと使用方法モジュラー管理Vuex の状態永続性要約する序文Vue 開発では、ユー...
コードをコピーコードは次のとおりです。 li {幅:300px; 高さ:23px; 行の高さ:24p...
目次1. HTML5のテンプレートタグ2. テンプレートタグ操作のプロパティとメソッド3. Vueの...
ツリーマップは主にツリーのようなデータ構造を視覚化するために使用され、特殊なタイプの階層です。これを...
最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...
目次1. v-forループでは常にキーを使用する2. 特定のスコープ内でv-forループを使用する3...
HTML の一般的なコメント: <!--XXXXXXXX--> (XXXXXXXX はコ...
固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...
こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...
ブラウザ モジュールの主な機能は、http リクエスト ヘッダーの「User-Agent」の値とブラ...
通常、クリック イベントは、メッセージ リマインダーのさまざまな状況に分割されます。これらが処理され...