MySQL 提取满足多列数据点的结果的子查询

MySQL Subquery to pull results that meet multiple column data-points

我想构建一个查询来提取满足来自另一个 table 的多列结果的结果。

我有一个名为 'Engagements' 的 Table 和一个名为 'Entertainers' 的 Table。 Engagement 包含 CustomerID 和 EntertainerId。艺人包含 EntertainerID 和 EntertainerName。

问题:列出已预订艺人 X、艺人 Y 和艺人 Z 演出的客户的客户 ID。

我已经尝试了下面的解决方案,但是 1) 我认为在子查询中联接不合适?和 2) 在同一列中有 2+ 个标准(即已预订艺人 X、Y 和 Z)似乎给我带来了问题。如有任何建议,我们将不胜感激。

SELECT DISTINCT Engagements.CustomerID
FROM Database.Engagements
WHERE Engagements.CustomerID = ALL (SELECT CustomerID
FROM Database.Engagements
JOIN Database.Entertainers USING (EntertainerID)
WHERE EntertainerName = "X"
OR EntertainerName = "Y"
OR EntertainerName = "Z";

只计算不同艺人的数量,如果是 3 则客户预订了所有三位艺人

SELECT CustomerID
FROM Engagements
JOIN Entertainers USING (EntertainerID)
WHERE EntertainerName IN ( 'A', 'B', 'C')
GROUP BY CustomerID
HAVING COUNT(DISTINCT Engagements.EntertainerID) = 3