0

我需要一些有关 select 语句的帮助。

table: mobiles (brand,model,price)

我尝试了以下语法来获取内容。

select * 
from mobiles 
where brand in ('apple','nokia','samsung') 
      and model in ('lumia 510','galaxy s3')

上述查询仅显示“nokia lumia 510”和“samsung galaxy s3”。

我希望它显示“apple”中的所有型号,仅显示“nokia”中的“lumia 510”和“samsung”中的“galaxy s3”。

我使用语法错了吗?

我正在开发一个网站,用户可以在其中按品牌和型号过滤手机。我只需要显示用户选择的手机。对于每个品牌,如果用户选择特定型号,则只显示该型号,如果他只选择品牌,则应显示该品牌下的所有手机。

他可以选择任意数量的品牌,并且在每个品牌下他可能会选择也可能不会选择特定的型号。

4

1 回答 1

1

你不能用 IN 做到这一点,因为每个品牌都有不同的型号要求。

SELECT *
FROM mobiles
WHERE (brand = 'apple')
OR (brand = 'nokia' AND model = 'nokia lumia 510')
OR (brand = 'samsung' AND model = 'galaxy s3')

如果模型对于特定品牌总是独一无二的,您可以稍微简化一下:

SELECT *
FROM mobiles
WHERE brand IN ('apple')
OR model IN ('nokia lumia 510', 'galaxy s3')

将所有没有选择型号的品牌放在第一个IN条款中,将所有型号放在第二个条款中。由于独特的关系,品牌被模型所暗示。

于 2013-02-22T23:32:44.653 回答