ホームページ >データベース >mysql チュートリアル >MySQL 連想テーブル内の複数の特定のカテゴリに存在する項目を検索するにはどうすればよいですか?

MySQL 連想テーブル内の複数の特定のカテゴリに存在する項目を検索するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 06:55:021063ブラウズ

How to Find Items Present in Multiple Specific Categories in a MySQL Associative Table?

複数の行の特定の列値に出現する ID の検索

MySQL 連想テーブルでは、複数の特定のカテゴリに存在する項目を識別することが課題となります。 AND 演算子と OR 演算子を使用した最初のアプローチは、指定されたすべてのカテゴリにアイテムが存在するという要件を考慮していないため、効果がありません。

この問題に対処するには、自己結合手法を使用できます。

<code class="sql">SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id = 201 AND c2.category_id = 202</code>

このメソッドは、テーブル内の 2 つの行を結合して結果セットに 1 つの行を作成し、複数のカテゴリ条件を評価できるようにします。

別のアプローチには、GROUP BY:

<code class="sql">SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201,202)
GROUP BY c.item_id
HAVING cat_count = 2</code>
このクエリはアイテムを ID でグループ化し、アイテムが属するカテゴリの数をカウントします。 HAVING 句を使用すると、指定されたすべてのカテゴリに存在する項目のみが返されます。

どちらの手法も、特定の列値を持つ複数行の項目を検索するための効率的なソリューションを提供しますが、パフォーマンスはクエリ対象のカテゴリの数に応じて異なります。

以上がMySQL 連想テーブル内の複数の特定のカテゴリに存在する項目を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。