如果我查询:

从Product_Options中选择零件号;

我得到这样的结果:

mysql - 选择在两个不同行中具有某些值的所有零件号-LMLPHP

我真正需要做的是从Product_Options中全部选择,其中OptionName ='Category'和OptionValue ='KID',OptionName ='Category'和OptionName ='SKT'。 OptionName在SAME行中必须具有这些值。

我现在可能不在这里,但是我尝试的查询导致语法错误:

从Product_Options中选择零件编号,其中OptionName ='Category'和OptionValue ='KID',OptionName ='Category'AND OptionValue ='SKT';

如果确实有效,则上面的查询将返回“ CR5661”,并且其他任何部件号的OptionValue为KID且OptionValue为SKT

我不确定是否需要使用JOIN,但是想法是选择类别为KID且类别也为SKT的所有零件号,所有零件号都具有相同的零件号。

最佳答案

如果每个count(distinct OptionValue)count(*)都是唯一的,则可以使用OptionValuePartNumber,并使用where将源限制为您要查找的值。

select PartNumber
from Product_Options
where OptionName = 'Category'
  and (OptionValue = 'KID' or OptionValue = 'SKT')
group by PartNumber
having count(distinct OptionValue)>1

10-04 11:06