我有一张这样的桌子:
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条记录,其中条件= 'New‘
但是,当我使用和时,它会返回正确的记录。
SELECT *
FROM `table`
WHERE `username` = 'kim'
AND `price` = '20'
AND `condition` = 'New'我想嵌套查询,以便只能从第一个查询的结果中选择价格和条件,即用户名。谢谢
发布于 2012-04-11 23:28:10
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New');发布于 2012-04-11 23:32:47
正如Rafal Wojcik所说,您需要使用一些括号来告诉数据库您正在分组的是什么OR。
在没有任何指导的情况下,引擎会在你的所有条件句到来时对它们进行分组:
username = 'kim' AND price = 20 OR condition = 'New' 读取为
((username = 'kim' AND price = 20) OR condition = 'New')如你所见,这不是你想要的。这里的OR适用于"kim-20“或"New”
在all AND案例中也观察到了同样的问题。
祝好运!
https://stackoverflow.com/questions/10109025
复制相似问题