Mysql仅返回具有n个属性匹配项的项

时间:2015-06-17 02:02:16

标签: php mysql select grouping

我有一个项目数据库,每个项目都有不同数量的属性。在运行搜索时,MySql是否可以返回具有一定数量匹配项(而不是属性)的项目?

示例:我正在搜索任何车轮为红色且有轮胎的物品。 这将返回具有这三个匹配项的所有项目,即使它们具有更多属性并且将自动排除少于3个匹配项的任何项目。

我尝试过使用COUNT + GROUP BY + HAVING,但我无法整理有意义的工作代码。在我花更多时间在此之前,我想知道它是否可能。

桌子设计

ID ITEM PROPERTY
1  1    red
2  1    wheel
3  1    tire
4  2    red
5  2    wheel
6  2    tire
7  2    lamp
8  3    red
9  3    wheel
10 4    red

我希望它返回第1项和第2项

1 个答案:

答案 0 :(得分:2)

您可以使用group byhaving执行此操作。您确实没有提供有关数据结构的信息,但基本思路是:

select ip.item
from design ip
where ip.property in ('wheel', 'red', 'tire')
group by ip.item
having count(distinct ip.property) = 3;