选择在两个不同行中具有某些值的所有部件号

时间:2017-03-10 18:39:08

标签: mysql sql mariadb

如果我查询:

SELECT PartNumber FROM Product_Options;

我得到这样的结果:

enter image description here

我真正需要做的是从Product_Options中选择所有选项,其中OptionName ='类别' AND OptionValue =' KID',OptionName ='类别' AND OptionName =' SKT'。 OptionName必须在SAME行中包含这些值。

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

SELECT PartNumber FROM Product_Options WHERE OptionName =' Category' AND OptionValue =' KID',OptionName ='类别' AND OptionValue =' SKT';

如果它确实有效,上面的查询将返回' CR5661'以及任何其他PartNumbers的OptionValue为KID和OptionValue为SKT

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

1 个答案:

答案 0 :(得分:1)

如果count(distinct OptionValue) count(*)对于每个OptionValue都是唯一的,则可以使用PartNumberwhere,并使用select PartNumber from Product_Options where OptionName = 'Category' and (OptionValue = 'KID' or OptionValue = 'SKT') group by PartNumber having count(distinct OptionValue)>1 将来源限制为您的值寻找。

<param-value>mypackage.GetEDPInfo</param-value>