ホームページ >データベース >mysql チュートリアル >同じ列の複数の条件に一致する SQL レコードを選択するにはどうすればよいですか?
同じ列で複数の一致基準を使用してレコードを選択します
SQL では、同じ列で複数の条件を満たすレコードを選択するのが難しい場合があります。次のシナリオを考えてみましょう:
ユーザータグを保存するテーブルがあります。各エントリには、連絡先 ID、タグ、およびタグ タイプが含まれます。検索フォームで指定されたすべてのタグに一致する連絡先 ID を取得するだけで済みます。
あなたが提案したクエリでは、同じ列名で複数の条件を使用しますが、SQL が単一の条件として解釈するため、結果は返されません。この問題を解決するには、次の 2 つのうちの 1 つを行うことができます:
方法 1: GROUP BY と HAVING を使用する
この方法では、結果を連絡先 ID ごとにグループ化し、検索条件に一致する個別のタグの数が指定されたタグの数と等しいかどうかを確認します。
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...)列表中的数量匹配</code>
方法 2: 接続を使用する
この方法では、条件ごとに複数の接続を作成します。
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如果需要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
方法の選択は、タグの数と予想される一致数によって異なります。一致する数が少ない長いタグ リストの場合は、最初のアプローチ (GROUP BY および HAVING) の方が高速な場合があります。ただし、多くの一致がある短いタグ リストの場合は、2 番目のアプローチ (連結) の方がパフォーマンスが向上する可能性があります。
以上が同じ列の複数の条件に一致する SQL レコードを選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。