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

where 句を使用して空のフィールドをフィルタリングする SQL 左結合

<p>テーブルが 2 つあり、1 つは Users テーブル、もう 1 つは Token テーブルです。これら 2 つのテーブルを結合して、どのユーザーがトークンを検証したか、どのユーザーが検証していないのかを確認したいと思います。トークン テーブルには、ユーザー ID を含む外部キーがあります。 </p> <p>今度は左結合を使用してユーザー ID を結合し、検証が行われないかどうかを確認しようとしています。クエリ ステートメントは次のとおりです。 </p> <pre class="brush:php;toolbar:false;">SELECT 名、確認済み FROM ユーザーの LEFT JOIN トークン ON users.ID = tokens.UID WHERE 検証済み = false</pre> <p>次の 2 つのテーブルがあるとします。</p> <pre class="brush:php;toolbar:false;">ID | 名前 0 | ジョー 1 | サリー 2 | デイブ 3 | ジョン</pre> <p>すると、トークンテーブルは次のようになります。 </p> <pre class="brush:php;toolbar:false;">ID | UID | 検証済み 0 | 1 | 0 1 | 2 | 0 2 | 3 | 1 <p>ご覧のとおり、Joe の 2 番目のテーブルにはレコードがありません。これら 2 つのテーブルを結合したいのですが、ジョーの 2 番目のテーブルにレコードがない場合でも、それを false/null として処理したいと考えています。認証されていないユーザーを検索するためにクエリを実行すると、データの 2 エントリのみが返されます。 </p> <pre class="brush:php;toolbar:false;">名前 | 確認済み サリー | 0 デイブ | 0</pre> <p>where 句を削除すると、結果は次のようになります。 </p> <pre class="brush:php;toolbar:false;">名前 | 確認済み サリー | 0 デイブ | 0 ジョン | 1 ジョー | NULL</pre> <p>ご覧のとおり、Joe の下部には null 値がありますが、これを未検証として扱いたいと考えています。次のデータを取得するにはクエリをどのように記述すればよいですか: </p> <pre class="brush:php;toolbar:false;">名前 | 確認済み サリー | 0 デイブ | 0 ジョー | NULL</pre> <p>または次のクエリ ステートメントの場合、結果は 3 になります。現在のクエリ結果は 2 です。 </p> <pre class="brush:php;toolbar:false;">SELECT カウント(*) FROM ユーザーの LEFT JOIN トークン ON users.ID = tokens.UID WHERE 検証済み = false</pre> <p><br /></p>
P粉511985082P粉511985082433日前504

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

  • P粉322106755

    P粉3221067552023-08-14 13:23:45

    リーリー

    返事
    0
  • キャンセル返事