假设我有一张表(称为car_color),其中有两列:汽车和颜色。该表格表示哪种车型可用哪种颜色,因此如果福特车有绿色,表格将包含一行:car = 'Ford', color = 'green'
。有数百或数千辆汽车,数十或数百种颜色和数千种组合。
然后有一个应用程序,其中列出了所有可能的颜色,用户可以选择一种或多种颜色。我们不知道用户会选择多少。在用户选择了颜色后,我们希望列出所有所有所选颜色的汽车。 SQL中最好的方法是什么?假设用户想要找到所有白色,银色,蓝色,红色和黑色的汽车?
我知道这可能很简单,但不知怎的,我找不到一个优雅的解决方案。如果我想列出以上颜色的任何中可用的所有汽车,那将是:
select car from car_color where color in ('white', 'silver', 'blue', 'red', 'black')
但当我只想要所有那些颜色的汽车时怎么做?
答案 0 :(得分:2)
select car
from car_color
where color in ('white', 'silver', 'blue', 'red', 'black')
group by car
having count(*) = 5
;