0

下の図のような MySQL テーブルproduct_idがあり、フィルタ 2 と 5 を持つ を見つけたいとします (したがって、テーブルでは、これは 30 の product_id になります)。これは MySQL で可能ですか? それとも、2 または 5 の製品 ID を取得filter_idして、PHP でソートする必要がありますか?

SQL テーブル

4

1 に答える 1

2

SELECT product_id, COUNT(*) AS i FROM mytable WHERE filter_id IN (2,5) GROUP BY product_id HAVING i = 2;

これは、必要な filter_id のいずれかを含む行と一致し、同じ product_id を持つ行をグループ化します。グループ内の行数を示す列に i という名前が付けられています。product_id から filter_id までのすべての組み合わせが一意であると仮定すると、2 つの行を持つグループは両方の filter_id に一致することがわかります。したがって、HAVING 句は最終的に、filter_id の 1 つだけに一致する行を除外します。

于 2013-04-14T09:55:31.727 に答える