Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择在两个不同行中具有某个值的所有零件号_Mysql_Sql_Mariadb - Fatal编程技术网

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

Mysql 选择在两个不同行中具有某个值的所有零件号,mysql,sql,mariadb,Mysql,Sql,Mariadb,如果我进行查询: 从产品选项中选择零件号 我得到的结果如下: 我真正需要做的是从Product_选项中选择所有选项,其中OptionName='Category'和OptionValue='KID',OptionName='Category'和OptionName='SKT'。OptionName必须在同一行中包含这些值 我现在可能离这里很远,但我尝试的查询导致语法错误: 从产品选项中选择零件号,其中OptionName='Category'和OptionValue='KID',OptionN

如果我进行查询:

从产品选项中选择零件号

我得到的结果如下:

我真正需要做的是从Product_选项中选择所有选项,其中OptionName='Category'和OptionValue='KID',OptionName='Category'和OptionName='SKT'。OptionName必须在同一行中包含这些值

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

从产品选项中选择零件号,其中OptionName='Category'和OptionValue='KID',OptionName='Category'和OptionValue='SKT'

如果它实际起作用,上述查询将返回“CR5661”以及OptionValue为KID和OptionValue为SKT的其他零件号

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

您可以使用
count(distinct OptionValue)
count(*)
如果
选项值
对于每个
零件号
都是唯一的,则使用
where
将源限制为仅查找的值

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

请参阅,如果OptionValue='KID'或OptionValue='SKT',此查询将选择PartNumber吗?如果OptionValue='KID'和OptionValue='SKT',我只需要选择PartNumber。@GTSJoe Right,
having count(distinct OptionValue)>1
确保当它有多个
'KID'
'SKT'
时,它只返回
PartNumber
,因为我们只计算
distinct
值,我们知道,如果它有多个值,则至少有两个值,这意味着它同时具有这两个值。@GTSJoe很乐意提供帮助!