如何用一个查询从一个表中选择多个键值?

时间:2018-01-17 19:18:36

标签: php mysql codeigniter

这是样本产品属性表

product_id  property_id property_value
5           1           white
5           2           50
5           3           50
5           4           55
5           5           mm
6           8           cm

我希望动态过滤我的产品。例如:

select property_id 1 and property_value white
AND
select property_id 2 and property_value 50
AND
select property_id 4 and property_value 55
AND
etc ...

我可以从基本查询中进行动态查询。当我一起使用所有条件时,没有匹配的记录,因为所有条件运算符都是AND。什么是最好的查询? 谢谢你的回答。

1 个答案:

答案 0 :(得分:1)

听起来你正在使用错误的关键字。在标准集之间使用OR代替AND

SELECT DISTINCT product_id

FROM product_properties

WHERE
(property_id = 1 and property_value = 'white')
OR
(property_id = 2 and property_value = '50')
OR
(property_id = 4 and property_value = '55')
OR
etc ...

如果您只想要符合各种条件的每个DISTINCT中的一个,则可以使用product_id,或者将其留下以便为每个匹配的行获取一个。