是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子句后边使用 用户变量
是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查询中,变量赋值(如@a:=empid)与GROUP BY、HAVING、ORDER BY子句的执行顺序,通过具体案例解释了变量赋值与查询条件应用之间的关系,并揭示了为何在特定情况下查询结果为空的现象。
1815

被折叠的 条评论
为什么被折叠?



