Mysql 如何按多个值筛选一列(严格筛选)?

Mysql 如何按多个值筛选一列(严格筛选)?,mysql,sql,Mysql,Sql,经过多次尝试,我都无法解决这个问题,所以我决定与您分享,看看您是否能帮助我 我已经创建了一个高级产品搜索,但我无法根据所选类别筛选产品,我解释道: 我有两个表,产品和产品类别 +------------------+ | Prodcuts | +-------+----------+ | pr_id | pr_title | +-------+----------+ | 1 | Iphone | +-------+----------+ | 2 | Samsu

经过多次尝试,我都无法解决这个问题,所以我决定与您分享,看看您是否能帮助我

我已经创建了一个高级产品搜索,但我无法根据所选类别筛选产品,我解释道:

我有两个表,产品和产品类别

+------------------+ | Prodcuts | +-------+----------+ | pr_id | pr_title | +-------+----------+ | 1 | Iphone | +-------+----------+ | 2 | Samsung | +-------+----------+ | 3 | Xiaomi | +-------+----------+ 这个查询的结果是Iphone和三星

但我想要的是,如果任何产品没有选择的3个类别,则不会显示任何内容,因为产品id 1没有类别id 8,反之亦然

我如何解决这个问题?

使用
distinct count()

使用
distinct count()


您可以尝试使用
内部联接

SELECT * products p
INNER JOIN products_categories pc on pc.ct_product = p.pr_id
WHERE pc.ct_category IN (5, 8, 7)

您可以尝试使用
内部联接

SELECT * products p
INNER JOIN products_categories pc on pc.ct_product = p.pr_id
WHERE pc.ct_category IN (5, 8, 7)
SELECT * products WHERE products.pr_id IN(
select ct_product
from products_categories
where  ct_category IN (5, 8, 7)
group by ct_product
having count(distinct ct_category)=3
)
SELECT * products p
INNER JOIN products_categories pc on pc.ct_product = p.pr_id
WHERE pc.ct_category IN (5, 8, 7)