where 句を使用して空のフィールドをフィルタリングする SQL 左結合
P粉511985082
P粉511985082 2023-08-13 19:06:52
0
1
539
<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粉511985082
P粉511985082

全員に返信(1)
P粉322106755

リーリー

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