MySQL 中 sql 的执行顺序

sql 的执行顺序是怎样的?
看个这篇文章 <<从零开始学习SQL查询语句执行顺序>>感觉这样的执行顺序是对的。
文章中提到 sql 的执行顺序

  1. from 语句
  2. on 语句
  3. left join、right join 的外部行
  4. where
  5. group by
  6. having
  7. select 列表
  8. distinct 去重
  9. order by
  10. limit

是按照这样的顺序执行的,但是有一个问题,我的sql语句

set @i:=0;select (@i:=@i+1) as pm,s.* from stuscore as s where s.subject='数学' order by score desc limit 1,1; 

这样查询出来的 pm 依然是 1。我怀疑过这个执行顺序是不正确的,如果要解释这个现象, select 列表 必须放在最后,但是我们日常的操作都是根据字段排序在 limit 进行分页的。
是因为涉及到变量会让变量部分的查询不按照这个规则来吗?

测试发现,6、7 顺序应该反过来。由此针对的测试
mysql 数据:

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sex` tinyint(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('张三', '12', '1');
INSERT INTO `test` VALUES ('张三', '12', '1');
INSERT INTO `test` VALUES ('张三', '10', '0');
INSERT INTO `test` VALUES ('张三', '11', '1');
INSERT INTO `test` VALUES ('张三', '14', '0');
INSERT INTO `test` VALUES ('王五', '10', '1');
INSERT INTO `test` VALUES ('李四', '12', '0');
INSERT INTO `test` VALUES ('李四', '12', '1');
INSERT INTO `test` VALUES ('李四', '11', '0');
INSERT INTO `test` VALUES ('王五', '12', '0');
INSERT INTO `test` VALUES ('李四', '10', '1');
INSERT INTO `test` VALUES ('王五', '13', '1');
INSERT INTO `test` VALUES ('王五', '14', '0');

sql 语句:

SELECT `name` as title,COUNT(`name`) as namenum FROM `test` GROUP BY `name` HAVING namenum >= 4 and title = '李四';

该语句可以正常查询到值

sql
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!