在MySQL中,为什么需要将自己创建的列(例如select 1 as "number")放在HAVING之后而不是WHERE之后?

如果不写WHERE 1(写整个定义而不是列名),还有什么缺点吗?

推荐答案

为什么在MySQL中,你需要把你自己创建的列(例如" Select 1作为数字")放在有了之后,而不是放在哪里?

WHEREGROUP BY之前涂抹,HAVINGGROUP BY之后涂抹(并且可以过滤骨料).

通常,在这两个子句中都可以引用别名,但MySQL允许在GROUP BYORDER BYHAVING中引用SELECT级别名.

如果不使用"WHERE 1"(编写整个定义而不是列名),会有什么负面影响吗

如果您的计算表达式不包含任何聚合,那么将其放入WHERE子句中可能会更有效.

Mysql相关问答推荐

MySQL InnoDB:可以在没有回滚损失的情况下从运行的查询中进行大型插入吗

MySQL在使用SELECT*时不使用索引

MySQL多次联接同一个表使计数变得奇怪

递归查询意外地为一个字段返回空值

MySQL grant语句中的用户名区分大小写

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

如何使用 DBD::mysql 判断 MySQL 服务是否正在运行

谁能帮我优化where子句

MYSQL:范围匹配与周年纪念日

包含 group_contact 的视图的问题

Golang Gorm没有从关联表中检索数据

MySQL 查询组按日期(12 小时间隔)

SQL 中的双杠 (||) 是什么意思?

提高mysql导入速度

没有 JDBC 类型的方言映射:1111

将相同的固定值插入多行

计算执行的查询数

MySQL 在每个唯一值第一次出现时 Select 行

在 Postgresql 中模拟 MySQL 的 ORDER BY FIELD()

如何将 MySQL 查询结果存储在另一个表中?