老师,关于sql语句执行顺序问题!

老师,关于sql语句执行顺序问题!

create table user2(
  id INT unsigned auto_increment key,
  username VARCHAR(20) not null unique comment '编号',
  age TINYINT unsigned not null DEFAULT 18 comment '年龄',
  sex ENUM('男','女','保密') not null DEFAULT '保密' comment '性别',
  addr VARCHAR(20) not null DEFAULT '北京',
  married TINYINT(1) not null DEFAULT 0 comment '0代表未结婚,1代表已婚',
  salary FLOAT(8,2) not null DEFAULT 0 comment '薪水'
)ENGINE=INNODB CHARSET=UTF8;
  insert user2 values(null,'张三',38,'男','上海',0,15000),
  (null,'张三凤',38,'男','上海',0,15000),
  (null,'张子怡',39,'女','北京',1,85000),
  (null,'汪峰',42,'男','深圳',1,95000),
  (null,'刘德华',58,'男','广州',0,115000),
  (null,'吴亦凡',28,'男','北京',0,75000),
  (null,'奶茶妹',18,'女','北京',1,65000),
  (null,'刘嘉玲',36,'女','广州',0,15000);

  update user2 set age=age-10 order by id desc limit 3;
      update user2 set age=age-10 limit 3 order by id desc;

老师, 为什么update user2 set age=age-10 order by id desc limit 3;可以,而update user2 set age=age-10 limit 3 order by id desc;则报错,是否说明sql是默认先执行排序再限制呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小班 2020-08-24 15:22:00

同学你好,在mysql中,order by与limit的执行顺序是:先执行order by,然后执行limit。

同学可以这样理解一下,在mysql数据库中limit是确定显示记录的条数,我们需要等它执行完order by(排序)之后,再来获取前3条的数据。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师