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

Überprüfen Sie, ob eine Spalte ALLE Werte einer anderen Spalte enthält - Mysql

Wenn ich das richtig verstehe, möchten Sie alle PersonIDs aus T1 abrufen, für die alle zugehörigen StuffIDs in T2 gefunden wurden.

Sie können dies wie folgt aufteilen:Finden Sie zunächst alle T1-Einträge, die mit einer verschachtelten Abfrage übereinstimmen

SELECT personID 
FROM T1 WHERE stuffID IN (SELECT stuffID FROM t2)

Jetzt müssen Sie überprüfen, welcher der Einträge in diesem Satz ALLE gewünschten StuffIDs enthält

GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)

und füge alles zusammen:

SELECT personID 
FROM T1 WHERE stuffID IN (SELECT stuffID FROM t2)
GROUP BY personID
HAVING COUNT(DISTINCT stuffID) = (SELECT COUNT(stuffID) FROM t2)

HTH.