如何选择与几个B匹配的'A'的所有值(MySQL)

时间:2016-10-23 14:15:40

标签: mysql sql

假设我有一张表(称为car_color),其中有两列:汽车和颜色。该表格表示哪种车型可用哪种颜色,因此如果福特车有绿色,表格将包含一行:car = 'Ford', color = 'green'。有数百或数千辆汽车,数十或数百种颜色和数千种组合。

然后有一个应用程序,其中列出了所有可能的颜色,用户可以选择一种或多种颜色。我们不知道用户会选择多少。在用户选择了颜色后,我们希望列出所有所有所选颜色的汽车。 SQL中最好的方法是什么?假设用户想要找到所有白色,银色,蓝色,红色和黑色的汽车?

我知道这可能很简单,但不知怎的,我找不到一个优雅的解决方案。如果我想列出以上颜色的任何中可用的所有汽车,那将是:

select car from car_color where color in ('white', 'silver', 'blue', 'red', 'black')

但当我只想要所有那些颜色的汽车时怎么做?

1 个答案:

答案 0 :(得分:2)

select      car 
from        car_color 
where       color in ('white', 'silver', 'blue', 'red', 'black')
group by    car
having      count(*) = 5
;