我有这样的表格:
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
案例都观察到相同的问题。
祝你好运!