検索

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

同じ列に対する複数の WHERE 条件を使用した SELECTING

<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粉384366923P粉384366923501日前466

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

  • P粉511896716

    P粉5118967162023-08-24 17:05:54

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

    重要なのは、

    t.flag

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

    COUNT(DISTINCT t.flag)

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

    返事
    0
  • P粉138871485

    P粉1388714852023-08-24 11:10:07

    GROUP BYHAVING COUNT(*) = __:

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

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

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

    リーリー

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

    返事
    0
  • キャンセル返事