如何在mysql

时间:2015-06-11 06:01:22

标签: mysql mysqli

我有一个包含列的表格&product; id'和' property_id'。一些具有20和20的属性的产品。 21,其中一些只有20或21。

product_id   property_id
1            20
1            21
2            20
3            21
3            20
4            21

我需要获得同时具有property_id 20和21的产品列表。在这里我需要产品列表1& 3如下,

product_id
1
3

4 个答案:

答案 0 :(得分:1)

这应该会给你正确的结果。

select product_id 
from `xy` 
where property_id in (20,21) 
group by product_id
having count( distinct property_id)=2

sqlfiddle

答案 1 :(得分:1)

使用INCOUNT(distinct property_id)

SELECT product_id
FROM TableName
WHERE property_id IN (20,21)
GROUP BY product_id 
HAVING COUNT(distinct property_id) = 2

<强>解释

IN检查property_id的值是否为20或21。

COUNT (distinct property_id) = 2验证有两个不同的property_id值。因此,当产品2在property_id中有两个相同的值(20,20)时,它将不会被选中。

<强>结果:

product_id
----------
1
3

SQL Fiddle中的示例结果。

答案 2 :(得分:0)

使用 IN 检查多个值。

Select product_id 
from products 
where property_id in(20,21) 
group by product_id 
having count(property_id) >=2

答案 3 :(得分:-1)

SELECT `product_id` FROM TableName
WHERE `property_id` IN (20,21)
GROUP BY `product_id`
HAVING COUNT(*) = 2