Mysql
 sql >> Database >  >> RDS >> Mysql

Operazione di sottoinsiemi MySQL

Dal tuo pseudocodice immagino che tu voglia controllare se un elenco (dinamico) di valori è un sottoinsieme di un altro elenco fornito da un SELECT . Se sì, verrà mostrata un'intera tabella. In caso contrario, non verranno visualizzate righe.

Ecco come ottenerlo:

SELECT *
FROM tb_values
WHERE 
    ( SELECT COUNT(DISTINCT value)
      FROM tb_value
      WHERE isgoodvalue = true
        AND value IN (value1, value2, value3)
    ) = 3

AGGIORNATO dopo la spiegazione di OP:

SELECT *
FROM project
  JOIN 
    ( SELECT projectid
      FROM projectTagMap
      WHERE isgoodvalue = true
        AND tag IN (tag1, tag2, tag3)
      GROUP BY projectid
      HAVING COUNT(*) = 3
    ) AS ok
    ON ok.projectid = project.id