3

我有一张这样的桌子:

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 条记录 where condition = 'New'

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

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

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

4

2 回答 2

3
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New');
于 2012-04-11T15:28:09.640 回答
2

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

在没有任何指导的情况下,引擎将所有条件分组:

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

读作

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

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

您的所有情况都观察到同样的问题AND

祝你好运!

于 2012-04-11T15:32:47.200 回答