我有一个项目数据库,每个项目都有不同数量的属性。MySql 是否可以在运行搜索时仅返回具有一定数量的匹配项(而不是属性)的项目?
示例:我正在搜索任何带有红色轮子且有轮胎的项目。这将返回具有这三个匹配项的所有项,即使它们具有更多属性,并将自动排除少于 3 个匹配项的任何项。
我尝试过使用 COUNT + GROUP BY + HAVE,但我无法将有意义的工作代码放在一起。在我花更多时间在这上面之前,我想知道这是否可能。
桌子设计
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
您可以使用
group by
和having
来执行此操作。 您实际上没有提供有关数据结构的信息,但基本思想是:
select ip.item
from design ip
where ip.property in ('wheel', 'red', 'tire')
group by ip.item
having count(distinct ip.property) = 3;