在运营商中使用Mysql
我有下表:在运营商中使用Mysql,mysql,Mysql,我有下表: id_attribute id_product_attribute 1 1 13 1 4 2 13 2 SELECT id_product_attribute FROM ps_product_attribute_combination WHERE id_product_attribute = 1 AND id_attribute IN (1,13) GROUP
id_attribute id_product_attribute
1 1
13 1
4 2
13 2
SELECT id_product_attribute
FROM ps_product_attribute_combination
WHERE id_product_attribute = 1
AND id_attribute IN (1,13)
GROUP
BY id_product_attribute
我想获取具有id\u属性的id\u产品属性
1
和13
我的问题如下:
id_attribute id_product_attribute
1 1
13 1
4 2
13 2
SELECT id_product_attribute
FROM ps_product_attribute_combination
WHERE id_product_attribute = 1
AND id_attribute IN (1,13)
GROUP
BY id_product_attribute
上述查询还返回id\u product\u属性
2
,而不是仅返回1
。我怎样才能做到这一点
有人能帮忙解决这个问题吗?
提前谢谢 这些链接可以帮助您:
及
从上述内容中,您可以使用:
SELECT id_product_attribute
FROM ps_product_attribute_combination
WHERE id_product_attribute = 1
AND id_attribute IN ('1','13')
GROUP
BY id_product_attribute
HAVING COUNT(DISTINCT ps_product_attribute_combination.id_attribute) = 2
因此,它将返回既在id\u属性
中,又在id\u属性
列中出现两次的结果(使用Having
子句)
或者:
您的查询表明:
SELECT id_product_attribute
FROM ps_product_attribute_combination
WHERE id_product_attribute = 1
所以实际上您总是选择id\u product\u attribute=1
。所以MySQL的结果总是
,这是不可能的。您可能有一些不同的数据,而不是您提出的问题。使COUNT(*)=2(并删除WHERE子句)可能重复的