执行 where 子句后 DBMS 的行为

behavior of DBMS after executing where clause

select查询中,当某些记录不满足where子句中的条件时,是否会被忽略以执行后续子句?

例如,假设我们有一个 group by 子句,在那之后,我们在 max(someThing)having 子句中有一个条件。 如果一条记录的最大值为属性 someThing,但不满足where子句中的条件,则在having or not?

中进行检查

in a select query when some records doesn't satisfy the condition in where clause, they will be omitted for executing subsequent clauses or not?

是的,它们将被省略。条款按顺序评估,被条款删除的记录不会被后续条款考虑。

if a record [...] didn't satisfy the condition in the where clause, it will be examining in the having or not?

在MySQL中,SQL语句中子句的典型求值顺序如下:FROMWHERESELECTGROUP BY, HAVING, ORDER BY.

此外 MySQL 与其他 RDBMS 关于 SELECT 子句的顺序有点不同(在许多其他 RDBMS 中,它在 GROUP BY 和 [=14= 之后执行] 子句),您可以看到 WHERE 子句执行得非常早(对于大多数(如果不是全部)RDBMS 也是如此)。因此,不满足它的记录在评估 GROUP BYHAVING 子句之前被清除。

您可以参考 this SO post 了解有关该主题的更多详细信息。