为什么需要在 HAVING
之后而不是 WHERE
中放置自己创建的列(例如 select 1 as "number"
)MySQL?
Why do you need to place columns you create yourself (for example select 1 as "number"
) after HAVING
and not WHERE
in MySQL?
与执行 WHERE 1
(编写整个定义而不是列名)相比,是否有任何缺点?
And are there any downsides instead of doing WHERE 1
(writing the whole definition instead of a column name)?
为什么需要在 HAVING 之后放置自己创建的列(例如选择 1 作为数字")而不是在 MySQL 中的 WHERE 中?
Why is it that you need to place columns you create yourself (for example "select 1 as number") after HAVING and not WHERE in MySQL?
WHERE
在 GROUP BY
之前应用,HAVING
在之后应用(并且可以过滤聚合).
WHERE
is applied before GROUP BY
, HAVING
is applied after (and can filter on aggregates).
通常,您不能在这两个子句中引用别名,但是 MySQL
允许在 GROUP BY
、 中引用
和 SELECT
级别的别名>ORDER BYHAVING
.
In general, you can reference aliases in neither of these clauses, but MySQL
allows referencing SELECT
level aliases in GROUP BY
, ORDER BY
and HAVING
.
与执行WHERE 1"(编写整个定义而不是列名)相比,是否有任何缺点
And are there any downsides instead of doing "WHERE 1" (writing the whole definition instead of a column name)
如果您的计算表达式不包含任何聚合,则将其放入 WHERE
子句中很可能会更有效.
If your calculated expression does not contain any aggregates, putting it into the WHERE
clause will most probably be more efficient.
这篇关于哪里 vs 有的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!