ホームページ  >  に質問  >  本文

MySQL の「where」ステートメントは完全な接続を中断します

次の表を考えてみましょう:

リーリー

t1 テーブルには 2022-02-01 の日付がありません。t2 テーブルには 2022-03-01 がありません。これら 2 つのテーブルを結合して次の結果を生成したいと考えています:

リーリー

解決策は完全接続を使用することです:

リーリー

これで私が望む結果が得られます。ただし、where ステートメントを使用すると、すべてが壊れます:

リーリー

この結果が得られると予想していました:

リーリー

しかし、次の結果が得られました:

リーリー

何が問題なのかはわかっていますが、解決策が見つかりません。問題は、t1.date > "whatever" によって t1 テーブル内の空の行がすべて除外されることです。この方法を試しましたが、うまくいきません:

リーリー
P粉141925181P粉141925181408日前563

全員に返信(2)返信します

  • P粉201448898

    P粉2014488982023-09-08 19:22:14

    を使用する必要があります

    リーリー

    "NULL = NULL" は、NULL には値がないため false と評価されます。したがって、他の値と同じにすることはできません (別の NULL であっても)。正しい方法は、is null

    を使用することです。

    返事
    0
  • P粉729198207

    P粉7291982072023-09-08 17:50:08

    正しい結合クエリでは t2.date > "2022-01-01" を使用する必要があるようです。

    リーリー

    デモは https://dbfiddle.uk/reo8UanD でご覧いただけます。

    返事
    0
  • キャンセル返事