2012-04-11 98 views
3

我有一个表是这样的:PHP MySQL的子查询过滤

id  price condition  username 
---------------------------------------- 
1  20  New   Kim 
2  30  Used   Kim 
3  40  Used   George 
4  60  New   Tom 

我的问题是关于子选择。当我使用这个查询,

SELECT * 
FROM `table` 
WHERE `username` = 'kim' 
    AND `price` = '20' 
    OR `condition` = 'New' 

它成为最后一个条件真实,带来了2条记录,其中状态=“新”

然而,当我使用AND,它返回正确的记录。

SELECT * 
FROM `table` 
WHERE `username` = 'kim' 
    AND `price` = '20' 
    AND `condition` = 'New' 

我想嵌套查询,以便我只能从第一个查询的结果中选择价格和条件,即用户名。谢谢

回答

3
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New'); 
+0

谢谢你。工作!从来没有想到这一点。 – karto 2012-04-11 15:45:22

2

由于Rafal Wojcik说你需要利用一些括号来告诉数据库什么或你正在分组。

没有任何指导做好发动机组所有的条件语句,因为他们来:

username = 'kim' AND price = 20 OR condition = 'New' 

全文

((username = 'kim' AND price = 20) OR condition = 'New') 

正如你看到的,这是不是你想要的。此处或适用于“kim-20”或“新”

与您的所有AND情况相同的问题。

祝你好运!