以下是我的架构和数据的简化版本:
用户:
id |名称 1 |彼得 2 |马克斯 3 |苏珊餐馆:
id |名称 1 |马里奥 2 |阿里 3 |阿方索 4 | BurgerQueen菜肴:
id | …
让我们重新解释一下这个问题:找到为每个用户提供至少一道菜的餐厅。它可以表达为:
SELECT * FROM restaurants WHERE id IN ( SELECT restaurants_dishes.restaurant_id FROM restaurants_dishes JOIN users_dishes ON restaurants_dishes.dish_id = users_dishes.dish_id WHERE users_dishes.user_id IN (1, 2, 3) -- <--------------+ GROUP BY restaurants_dishes.restaurant_id -- | HAVING COUNT(DISTINCT users_dishes.user_id) = 3 -- this matches --+ )