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

标签 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 项

最佳答案

您可以使用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;

关于php - Mysql 仅返回具有 n 个属性匹配的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30881138/

相关文章:

php - 如何将多个数组放入一个数据库表中

perl - “select((select(s),$|=1)[0])”在Perl中做什么?

Mysql 获取分组的两个表列的总和

php - Ajax 和 PHP 存在 while 循环问题

php - 在 PHP 中用于加密/解密的 Mcrypt 替代品?

php - 如何检查特定表中是否插入了新行

mysql - 使用 "SELECT AS"和其他新列创建表

php - 为什么此查询不返回对象?

mysql - 这是适合存储大量图像的数据库(用于在线购物车)

SQL 查询 ID 不存在于另一个表中或存在但所有记录都在历史记录中?