mysql是否考虑了WHERE子句的顺序?

时间:2014-01-26 06:09:43

标签: mysql

我的意思是,如果我们有

SELECT id FROM table WHERE clause1 AND clause2 AND clause3

如果在没有验证子句2和子句3的情况下,如果子句为假,mysql是否会跳过第n条记录?

1 个答案:

答案 0 :(得分:1)

是和否。

ADD运算符要求它们都是真的。

如果你想要查找这3个条款中的任何一个是真的,你应该使用OR。

SELECT id
FROM table
WHERE clause1 AND clause2 AND clause3

只返回TRUE,TRUE和TRUE情况

鉴于:

SELECT id
FROM table
WHERE clause1 OR clause2 OR clause3

将返回

  • TRUE,TRUE&TRUE

  • FALSE,TRUE&TRUE

  • TRUE,FALSE AND TRUE
  • TRUE,TRUE,TRUE

  • 真,假,错误

  • FALSE,TRUE&FALSE
  • FALSE,FALSE AND TRUE

所以要回答你的问题,如果你使用并添加运算符,如果第一个结果为假,它会自动取消结果,但那是因为接下来的两个都没关系。如果你使用OR运算符,那么在检查结果之前它不会取消结果。