PHP mysql子查询过滤

时间:2012-04-11 15:25:01

标签: 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条记录,其中condition ='New'

但是,当我使用AND时,它会返回正确的记录。

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

正如Rafal Wojcik所说,你需要利用一些括号来告诉数据库你正在分组的是什么。

没有任何指导,引擎会将所有条件组合在一起:

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

读为

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

如你所见,这不是你想要的。这里或适用于“kim-20”或“新”

您的所有AND案例都会出现同样的问题。

祝你好运!