首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MySQL子查询过滤

PHP MySQL子查询过滤
EN

Stack Overflow用户
提问于 2012-04-11 23:25:01
回答 2查看 90关注 0票数 3

我有一张这样的桌子:

代码语言:javascript
复制
id     price    condition     username
----------------------------------------
 1       20     New           Kim 
 2       30     Used          Kim
 3       40     Used          George
 4       60     New           Tom

我的问题是关于分项选择。当我使用这个查询时,

代码语言:javascript
复制
SELECT *
FROM `table`
WHERE `username` = 'kim'
  AND `price` = '20'
   OR `condition` = 'New' 

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

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

代码语言:javascript
复制
SELECT *
FROM `table`
WHERE `username` = 'kim'
  AND `price` = '20'
  AND `condition` = 'New'

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

EN

回答 2

Stack Overflow用户

发布于 2012-04-11 23:28:10

代码语言:javascript
复制
SELECT * FROM table WHERE username = 'kim' AND (price = '20' OR condition = 'New');
票数 3
EN

Stack Overflow用户

发布于 2012-04-11 23:32:47

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

在没有任何指导的情况下,引擎会在你的所有条件句到来时对它们进行分组:

代码语言:javascript
复制
username = 'kim' AND price = 20 OR condition = 'New' 

读取为

代码语言:javascript
复制
((username = 'kim' AND price = 20) OR condition = 'New')

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

在all AND案例中也观察到了同样的问题。

祝好运!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10109025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档