Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Auswählen gegen Teilmengen einer Liste in MySQL

Wenn Sie vorgeben, dass sich Ihr Filter in einer Tabelle befindet:

select * 
from product p
where not exists (
    select 1
    from attributes a
    where a.product_id = p.product_id
    and not exists(
        select 1
        from filter f
        where f.id_attribute = a.id_attribute))

Wenn es in einer konstruierten Abfrage war:

select * 
from product p
where not exists (
    select 1
    from attributes a
    where a.product_id = p.product_id
    and attribute_id not in (<list>))

Das ist mir spontan eingefallen, kann also Tippfehler enthalten.