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

MYSQL-Subset-Operation

Aus Ihrem Pseudocode gehe ich davon aus, dass Sie überprüfen möchten, ob eine (dynamische) Liste von Werten eine Teilmenge einer anderen Liste ist, die von einem SELECT bereitgestellt wird . Wenn ja, dann wird eine ganze Tabelle angezeigt. Wenn nicht, werden keine Zeilen angezeigt.

So erreichen Sie das:

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

AKTUALISIERT nach OPs Erklärung:

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