以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正しました。当時は非常に単純に思えたので、次の SQL を書きました。 SELECT COUNT(*) FROM t1 where tl.c1 not IN (SELECT t2.c1 FROM t2); 期待される結果は、t1 にあって t2 にないデータがいくつあるかということです。結果は 0 で、つまり t1 のすべてのデータが t2 にあります。ただし、一部のデータが t1 にあるのに t2 にはないことは簡単にわかるので、非常に奇妙に感じます。この SQL は問題ないようです。調べてみると、t2 の c1 フィールドに null 値が含まれていることがわかりました。次の 2 つの形式に変更すると、期待どおりの結果が得られます。 SELECT COUNT(*) FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1 WHERE t2.c1 IS NULL OR t2.c1 = ''; または t1.c1が(に含まれない)からCOUNT(*)を選択します。 t2.c1 が null ではなく、t2.c1 != '' の場合、t2 から t2.c1 を選択します。 ); つまり、すべて null が原因です (エラーを回避するために空の文字列も追加しました)。その理由は、not in の実装原則は、各 t1.c1 と各 t2.c1 (かっこ内のクエリ結果) を比較して不等 (!=) であるかどうかを確認することだからです。 c1 を t2 で繰り返し実行: t1.c1 != c1 の場合: 続く それ以外: 偽を返す 真を返す SQL では、!=null のすべての演算結果は false になるため、t2 に null がある場合、not in のクエリは常に false を返します。つまり、クエリ結果は空になります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: WeChatアプレットは左にスワイプしてリスト項目を削除する効果を実現
>>: Docker で MySQL データベースを使用して LAN アクセスを実現する
JavaScriptの服装アルバム切り替え効果(Taobao商品画像切り替えに似ています)、参考ま...
目次etcdの機能etcdが独自の高可用性クラスタを構築するには、主に3つの形式があります。今回構築...
注: Web 開発では、フォームに autocomplete="off" を追加...
今日、フラッシュ広告のコードを書いていたとき、フラッシュに付属するリンクはポップアップ広告と間違われ...
VMware12.0+Ubuntu16.04+MySQL5.7.22 インストールチュートリアルの詳...
具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...
CSS Sprite は、CSS スプライトとも呼ばれ、画像結合技術です。この方法は、複数の小さなア...
準備まず、nodejs をダウンロードする必要がありますが、これは問題ないはずです。原文はwebst...
序文Ubuntu 18.04 LTS で IP アドレスを設定する方法は、これまで使用されていた設定...
人気があり強力な Apache Web サーバーで 2 つ以上のサイトをホストする方法。前回の記事で...
この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...
目次変数のスコープ閉鎖の概念クロージャの使用クロージャのデメリット最後に、クロージャのメリットとデメ...
データ分析の分野では、データベースは私たちの強力な助けとなります。クエリ時間を受け入れるだけでなく、...
この記事は主にMySQLデータベースのバイナリ型操作を紹介し、具体的な内容を通して紹介します。MyS...
この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...