符合条件的所有行中的Mysql搜索字段
首先,我知道这篇文章的标题没有恰当地描述情况,我会采纳任何建议来改变它 情况如下: 我有一个包含3列的表:itemName、keyField和value, 下面是一个例子:符合条件的所有行中的Mysql搜索字段,mysql,sql,algorithm,Mysql,Sql,Algorithm,首先,我知道这篇文章的标题没有恰当地描述情况,我会采纳任何建议来改变它 情况如下: 我有一个包含3列的表:itemName、keyField和value, 下面是一个例子: itemName | keyField | value ----------------------------------- pen | color | blue car | color | green pen | weight
itemName | keyField | value
-----------------------------------
pen | color | blue
car | color | green
pen | weight | 10 grams
pen | weight | 10 grams
chair | price | $30.00
chair | color | blue
shoes | brand | whatever
如您所见,该表用于动态存储项的任何属性。
我需要一个查询来搜索颜色为蓝色、重量为10克的所有项目,在这种情况下,这就是笔。
它还应该能够搜索所有蓝色物品(钢笔和椅子)
Mysql:5.7您可以像这样使用聚合:
select itemname
from t
where (keyfield, value) in ( ('color', 'blue'), ('weight', '10 grams') )
group by itemname
having count(*) = 2; -- both match
澄清一下:这个解决方案在我的情况下有效,因为itemName键域组合是唯一的。在itemName关键字字段可以重复的情况下,它不起作用。我想关键是count(*)=2条件。@ArmandoRodríguezacast。在这种情况下,逻辑也可以调整。
count(*)
是最简单的方法,它符合问题的需要。