`

mysql语句的执行顺序问题

阅读更多
是select 先执行还是group by 先执行?

是select 先执行 还是 having 子句先执行??

mysql> select (@a :=empid) a ,heyf_t10.* from heyf_t10 ;
+---+-------+--------+--------+
| a | empid | deptid | salary |
+---+-------+--------+--------+
| 1 |     1 |     10 | 5500   |
| 2 |     2 |     10 | 4500   |
| 3 |     3 |     20 | 1900   |
| 4 |     4 |     20 | 4800   |
| 5 |     5 |     40 | 6500   |
| 6 |     6 |     40 | 14500  |
| 7 |     7 |     40 | 44500  |
| 8 |     8 |     50 | 6500   |
| 9 |     9 |     50 | 7500   |
+---+-------+--------+--------+
9 rows in set

mysql> select (@a :=empid) a ,heyf_t10.* from heyf_t10 having @a =5;
Empty set

第二个查询 条件是 having @a=5 的时候 结果集为什么是空的呢??

---------------------------------------------------------------
mysql> select (@a :=empid) a ,heyf_t10.* from heyf_t10 having empid =5;
+---+-------+--------+--------+
| a | empid | deptid | salary |
+---+-------+--------+--------+
| 5 |     5 |     40 | 6500   |
+---+-------+--------+--------+
1 row in set

为什么 当条件 使用having empid=5 的时候能够正常返回数据记录

总结 不能在group by, having,ORDER BY子句后边使用 用户变量
分享到:
评论

相关推荐

    sql和MySQL的语句执行顺序分析

    SQL和MySQL的语句执行顺序是数据库操作中的关键概念,理解这一顺序有助于编写更高效、更精确的查询。本文将详细解析SQL语句在MySQL中的执行流程,以便于开发者更好地理解和优化自己的SQL查询。 首先,SQL执行顺序...

    简单了解mysql语句书写和执行顺序

    mysql语句的书写顺序和执行顺序有很大差异。 书写顺序,mysql的一般书写顺写为: select <要返回的数据列> from <表名> <join> join on where group by <分组条件> having <分组后的筛选条件> ...

    Mysql 关键字执行顺序

    MySQL 关键字执行顺序是数据库查询优化的重要概念,它直接影响着SQL语句的性能和结果。下面我们将详细探讨这些关键字的执行流程,并解答一些常见疑问。 首先,MySQL的执行顺序如下: 1. FROM:首先执行FROM子句,...

    MySQL语句执行顺序和编写顺序实例解析

    select语句完整语法: SELECT DISTINCT <select_list> FROM <join> JOIN ON WHERE GROUP BY HAVING ORDER BY ...执行顺序: from →join →on →where →group by→having→select→order

    SQL语句执行深入讲解(MySQL架构总览-查询执行流程-SQL解析顺序)

    本文将深入探讨MySQL数据库系统中的SQL语句执行过程,包括MySQL的架构总览、查询执行流程以及SQL语句的解析顺序。 首先,我们来看MySQL的架构总览。MySQL架构分为两个主要层次:SQL Layer(SQL层)和Storage Engine...

    mysql语句跟踪.txt

    这里`mysql-bin`是默认的二进制日志前缀,实际日志文件名会自动按照顺序生成,如`mysql-bin.000001`、`mysql-bin.000002`等。同时,也可以通过`SHOW VARIABLES LIKE 'log_bin%'`来查看Binary Log的状态。 ### 3. ...

    MySQL语句优化的原则

    ### MySQL语句优化的核心原则与实践 #### 一、索引的重要性及合理设计 1. **索引的作用**:索引能够显著加快数据检索的速度,这是因为它们提供了快速访问数据库表行的方法,类似于书籍的目录。 2. **非群集索引与...

    详细说一下一条 MySQL 语句执行的步骤

    Server 层按顺序执行 SQL 的步骤为: 客户端请求 -> 连接器(验证用户身份,给予权限) 查询缓存(存在缓存则直接返回,不存在则执行后续操作) 分析器(对 SQL 进行词法分析和语法分析操作) 优化器(主要对执行的...

    Effective MySQL之SQL语句最优化.pdf

    可以利用EXPLAIN命令来查看SQL的执行计划,包括执行顺序、扫描行数、是否使用索引等信息。 6. 索引的使用:合理创建和使用索引可以大大加快查询速度。但是不恰当的索引会降低写操作的性能。因此,了解如何选择合适...

    mysql 索引与执行计划

    - ID相同:执行顺序由上至下。 - ID不同:如果是子查询,ID值越大,优先级越高,越先被执行。 - ID相同又不同:可以认为是一组,从上往下顺序执行;在所有组中,ID值越大,优先级越高,越先执行。 - **select_...

    50道MySQL经典练习题

    这个是网上流传的50道SQL练习题,最近拿来...这里放上MySQL语法执行的先后顺序: 7:SELECT 查询列表 1:FROM 表 2:连接类型 JOIN 表2 3:ON 连接条件 4:WHERE 筛选条件 5:GROUP BY 分组 6:HAV

    MySql执行一条查询语句的内部执行过程?

    MySQL执行一条查询语句的内部执行过程是一个复杂且精细的过程,涉及到多个阶段和组件的协同工作。以下将详细解析这个过程: 1. **解析(Parser)**:当用户提交一个SQL查询时,MySQL的解析器首先对语句进行语法检查...

    Mysql利用profiles来查看SQL语句执行计划.doc

    MySQL 的 `Profiles` 功能是一个非常强大的工具,它允许数据库管理员和开发者深入了解 SQL 语句的执行过程,从而优化数据库性能。这一特性自 MySQL 5.0.37 版本引入,为用户提供了比 `EXPLAIN` 更深入的洞察,包括 ...

    MySQL DQL - 执行顺序.md

    通过上述介绍,我们可以看到MySQL DQL查询语句的执行顺序是: 1. `FROM`子句定义了查询的基础表。 2. `WHERE`子句用于过滤行。 3. `GROUP BY`子句将结果集按列分组。 4. `HAVING`子句对分组后的结果进行筛选。 5. `...

    简单了解MySQL SELECT执行顺序

    SELECT语句的完整语法为: (7) SELECT (8) DISTINCT <select_list> (1) FROM (3) <join> JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT 说明:语法前面的序号为SELEC

    MySQL hint用法解析

    在MySQL中还有一种提示,叫做hint,hint是对数据库的提示,我们都知道, 在执行一条SQL语句的时候,MySQL都会生成一个执行计划,而hint就是用来告诉优化器按照我们告诉它的方式生成执行计划。Hint可以基于表连接的...

    mysql文档执行计划

    1. **`EXPLAIN EXTENDED SELECT ...`**:这种变体不仅显示执行计划,还会反编译计划成SQL语句,并通过`SHOW WARNINGS`命令展示被MySQL优化器优化后的查询语句,帮助理解优化过程。 2. **`EXPLAIN PARTITIONS SELECT...

Global site tag (gtag.js) - Google Analytics