検索

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

テーブルの 1 つが空の場合、mysql でのクエリでは結果が 0 になります

これらの 3 つのテーブルがあります:

リーリー

次の条件の少なくとも 1 つを満たす行をレポート テーブルから取得したいと考えています:

リーリー

まず、一般公開される新しいレポートを作成します:

リーリー

この場合、別のレポートには user_id = 1 でのみアクセスできます:

リーリー

この場合、別のレポートには group_id = 1

によってのみアクセスできます。 リーリー

現在、3 つの行があります。それぞれにアクセス可能で、1 つの行は user_id = 1 によってのみアクセスでき、もう 1 つの行は group_id = 1 によってのみアクセスできます。

user_id = 1 であるすべての行を教えてください:

リーリー

2 行が表示されます。それは動作します。

group_id = 1 のすべての行を教えてください:

リーリー

2 行が表示されます。それは動作します。

###しかし。 report_users または report_groups が空の場合、結果は得られません。最初に次のクエリを実行します:

リーリー

前と同じクエリを実行すると、空のセットが返されます。なぜ?実際、送信している user_id と group_id に違いはないようです。常に 0 行が得られます。

私には、2 つのテーブルのうちの 1 つが空であるという理由だけで結果が得られないように思えます。 クエリ自体に何か問題があるのでしょうか?

P粉848442185P粉848442185455日前466

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

  • P粉087951442

    P粉0879514422023-09-14 12:48:37

    このコード行をどうするか:

    リーリー

    は 3 つのテーブルの (古いスタイルの) CROSS JOIN です。これは、テーブルの 1 つが空の場合、結果も空になることを意味します。

    代わりに EXISTS を使用してください:

    リーリー

    返事
    0
  • キャンセル返事