PHP mysql 子查询过滤


PHP mysql subqueries filtering

我有这样的表格:

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' 

对于最后一个条件,它变为 true,并带来 2 条记录,其中条件 ='New'

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

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

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

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

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

在没有任何指导的情况下,引擎会在所有条件出现时将它们分组:

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

读作

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

如您所见,这不是您想要的。此处 OR 适用于"kim-20"或"新"

您的所有AND案例都观察到相同的问题。

祝你好运!