MySQL の「where」ステートメントは完全な接続を中断します
P粉141925181
P粉141925181 2023-09-07 21:23:58
0
2
597

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

リーリー

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

リーリー

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

リーリー

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

リーリー

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

リーリー

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

リーリー

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

リーリー
P粉141925181
P粉141925181

全員に返信(2)
P粉201448898

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

リーリー

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

を使用することです。
いいねを押す +0
P粉729198207

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

リーリー

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート