mysql有意思的order by 子查询

在对应的mysql技术小伙伴交流群里发现一个这样的order by

需求:根据学生的平均成绩排序

按我以往的经验,我肯定

select t1.* from student t1
join (select sno,avg(score) avg_score from student group by t1.sno) t2
on t1.sno=t2.sno
order by t2.avg_score 

然后发现群里还可以这样,也算是涨见识了吧,没想到order by里也可以这样用,以前都是用在 where 子查询和  select 子查询中

    

原文地址:https://www.cnblogs.com/gered/p/12696134.html

时间: 2024-10-12 07:56:09

mysql有意思的order by 子查询的相关文章

MySQL 通过semi join 优化子查询

测试环境 mysql> desc class; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | class_num | int(11) | NO | PRI | NULL | | | class_name |

MYSQL优化派生表(子查询)在From语句中的

Mysql 在5.6.3中,优化器更有效率地处理派生表(在from语句中的子查询): 优化器推迟物化子查询在from语句中的子查询,知道子查询的内容在查询正真执行需要时,才开始物化.这一举措提高了性能: 1:之前版本(5.6.3),from语句中的子查询在explain select 查看执行计划语句执行时就会物化.它导致了部分查询执行,但explain语句的目的是获取执行计划信息,而不是执行查询 该版本物化不会在explain中发生,所以explain执行计划结果的得到更快: 2:因为上面提及

mysql:error 1093 update子查询

一. 需求 要将base_info.name以wl_开头的数据的status字段更新为2 二.执行 Update base_info Set a.status=2 Where (select id from base_info where name like '%xx%') 执行时,提示1093错误, ERROR 1093 (HY000): You can't specify target table 't' for update in FROM clause . mysql不支持修改一个表的时

Mysql,Update中无法使用子查询和别名

update Po_Header set total_fee = ( select ip.payment-ip.post_fee from po_header ip where ip.po_header_id = po_Header_Id)where Trade_ID in( select trade_id from trade where shop_id = 2094; 以上update脚本在Mysql中需要通过InnerJoin的方式完成 update Po_Header p1 INNER

mysql中delete from in子查询删除失败

遇到一个情况,想通过表1的id找到表2,删除表2中barcode关联的库存数据,然后一直不能失败,如下: delete from 库存表 where BARCODE in( select BARCODE from 表1 where fmoveid= (select id from 表2 where PCID='SMX2014082604494930') ); 解决方式,加别名 delete from 库存表 where BARCODE in( select aa.BARCODE from(   

Mysql——子查询

子查询的位置: select 中.from 后.where 中.group by 和order by 中无实用意义. 子查询分为如下几类: 1,标量子查询:返回单一值的标量,最简单的形式. 2,列子查询:返回的结果集是 N 行一列. 3,行子查询:返回的结果集是一行 N 列. 4,表子查询:返回的结果集是 N 行 N 列. 可以使用的操作符:= > < >= <= <> ANY IN SOME ALL EXISTS 标量子查询:是指子查询返回的是单一值的标量,如一个数字

MySQL学习笔记-子查询和连接

MySQL学习笔记-子查询和连接 使客户端进入gbk编码方式显示: mysql> SET NAMES gbk; 1.子查询 子查询的定义: 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句. 例如:  SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2); 其中SELECT * FROM t1 称为Outer Query / Outer Statement (外部查询) SELECT col2 FROM t2 , 被称为Su

MySQL里面的子查询

一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任何子句,比如:distinct. group by.order by.limit.join和union等:但是对应的外部查询必须是以下语句之一:select.insert.update.delete.set或 者do. 子查询的位置: select 中.from 后.where 中.group by 和order by

mysql子查询慢的问题

当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的"坑"...下面我们来看一个具体的例子 有这样一条查询语句: SELECT gid,COUNT(id) as count FROM shop_goods g1 WHERE status =0 and gid IN (SELECT gid FROM shop_goods g2 WHERE si