同じ列に対する複数の WHERE 条件を使用した SELECTING
P粉384366923
P粉384366923 2023-08-23 19:08:16
0
2
441
<p>わかりました。ここで明白で単純なことを見落としているかもしれません...しかし、同じ列の複数の条件に一致するレコードのみを返すクエリを作成する必要があります... </ p> <p>私のテーブルは、ユーザーにフラグを適用するための非常に単純なリンク設定です...</p> <pre class="brush:php;toolbar:false;">ID contactid flag flag_type ---------------------------------- 118 99 ボランティア 1 119 99 アップロード 2 120 100 インポート経由 3 121 100 ボランティア 1 122 100 アップロード 2</pre> <p>お待ちください...この場合、連絡先 99 と 100 が両方とも「ボランティア」および「アップロード済み」としてマークされていることがわかります...</p> <p>必要なのは、検索フォームで入力された複数の条件に一致する連絡先 ID を返すことだけです...連絡先 ID は、選択されたすべてのフラグと一致する必要があります...私の頭の中では、SQL は次のようになります。 < ; /p> </p> <pre class="brush:php;toolbar:false;">連絡先 ID を選択 WHERE フラグ = 'ボランティア' AND フラグ = 'アップロード済み'...</pre> <p>しかし...何も返されません...ここで何が間違っているのでしょうか? </p>
P粉384366923
P粉384366923

全員に返信(2)
P粉511896716

###使用:### リーリー

重要なのは、

t.flag

の数が IN 句のパラメータの数と同じである必要があるということです。

COUNT(DISTINCT t.flag)

の使用は、contactid と flag の組み合わせに一意の制約がないことを防ぐためです。重複する可能性がない場合は、DISTINCT を省略できます。クエリ: リーリー

いいねを押す +0
P粉138871485

GROUP BYHAVING COUNT(*) = __:

を使用できます。 リーリー

(contact_id、flagが一意であると仮定します)。

または接続を使用します:

リーリー

フラグ リストが長く、一致するものが多数ある場合は、最初のフラグの方が速い可能性があります。フラグ リストが短く、一致するものがほとんどない場合は、2 番目のリストの方が速い場合があります。パフォーマンスが問題になる場合は、データでテストしてどれが最も効果的かを確認してください。

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