在同一查询中多次查询同一字段

时间:2014-06-19 15:46:17

标签: mysql

我需要在mysql中过滤一个表,但是无法通过开头。 该表有两个字段:

ID_house     house_feature
1            1
1            2
1            4
1            5
2            1
2            3
2            4
3            1
3            2
3            3

我需要使用以下参数过滤此表:

house feature = 1
AND 
house feature = 2
AND 
house feature = 3

这样我就可以获得所有要求的房屋。 我已经尝试创建类似于此的东西:

SELECT *
FROM houses
WHERE
house_feature = 1 
   AND 
house_feature = 2 
   AND 
house_feature = 3

但它没有像我预期的那样奏效。 有没有办法用MySQL获得这个结果? 似乎我只使用OR运算符过滤表,但这样我无法得到正确的结果。

提前感谢您的帮助。

tony

1 个答案:

答案 0 :(得分:1)

你可以通过匹配每个房子的不同特征数量来实现,所以具有这三个特征的房子将被退回

SELECT *
FROM t
WHERE
house_feature  IN(1 ,2,3)
group by ID_house
having count(distinct house_feature) = 3

Demo