因此有一个与“报价”相关的参数表。参数表如下所示:
- offer_id
- 参数名称
- 参数值
表格条目如下所示:
offer_id | parameter_name | parameter_value
1 | price | 100
1 | width | 150
1 | height | 200
1 | place | left
1 | place | right
2 | price | 300
2 | width | 150
2 | height | 200
现在我想使用 MySQL 查询在此表中执行搜索,其中
- 价格大于80且小于120
- 宽度等于到 150
- 高度等于200
- 地点是左或右
预期结果:
- offer_id = 1
MySQL 查询是什么样的?
非常感谢。
最佳答案
类似这样的:-
SELECT *
FROM offers a
INNER JOIN offers b ON a.offerid = b.offerid
INNER JOIN offers c ON b.offerid = c.offerid
INNER JOIN offers d ON c.offerid = d.offerid
WHERE a.parameter_name = 'price'
AND b.parameter_name = 'width'
AND c.parameter_name = 'height'
AND d.parameter_name = 'place'
AND a.parameter_value BETWEEN 80 AND 120
AND b.parameter_value = '150'
AND c.parameter_value = '200'
AND d.parameter_value IN ('left','right')
请注意,这有时会返回多行(即 id 1 会返回多次)。如果需要,您可以使用 DISTINCT 删除它。取决于如何使用数据。
关于mysql - 如何在MySQL中的多个参数表中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12904536/