diff --git a/res/all_in_one.png b/res/all_in_one.png index 87a7ca1..96c42df 100644 Binary files a/res/all_in_one.png and b/res/all_in_one.png differ diff --git a/第47课.MySQL新特性.md b/第47课.MySQL新特性.md index 5b729a9..1a19c2f 100755 --- a/第47课.MySQL新特性.md +++ b/第47课.MySQL新特性.md @@ -159,14 +159,14 @@ select * from ( ) `temp` where `rank` between 4 and 6; ``` -> **说明**:上面使用的函数`row_number()`可以为每条记录生成一个行号,在实际工作中可以根据需要将其替换为`rank()`或`dense_rank()`函数,三者的区别可以参考官方文档或阅读[《通俗易懂的学会:SQL窗口函数》](https://zhuanlan.zhihu.com/p/92654574)进行了解。在MySQL 8以前的版本,我们可以通过下面的方式来完成类似的操作。 -> -> ```SQL -> select `rank`, `ename`, `sal` from ( -> select @a:=@a+1 as `rank`, `ename`, `sal` -> from `tb_emp`, (select @a:=0) as t1 order by `sal` desc -> ) as `temp` where `rank` between 4 and 6; -> ``` +上面使用的函数`row_number()`可以为每条记录生成一个行号,在实际工作中可以根据需要将其替换为`rank()`或`dense_rank()`函数,三者的区别可以参考官方文档或阅读[《通俗易懂的学会:SQL窗口函数》](https://zhuanlan.zhihu.com/p/92654574)进行了解。在MySQL 8以前的版本,我们可以通过下面的方式来完成类似的操作。 + + ```SQL +select `rank`, `ename`, `sal` from ( + select @a:=@a+1 as `rank`, `ename`, `sal` + from `tb_emp`, (select @a:=0) as t1 order by `sal` desc +) as `temp` where `rank` between 4 and 6; + ``` 例子2:查询每个部门月薪最高的两名的员工的姓名和部门名称。 @@ -180,13 +180,13 @@ from ( ) as `temp` natural join `tb_dept` where `rank`<=2; ``` -> 说明:在MySQL 8以前的版本,我们可以通过下面的方式来完成类似的操作。 -> -> ```SQL -> select `ename`, `sal`, `dname` from `tb_emp` as `t1` +说明:在MySQL 8以前的版本,我们可以通过下面的方式来完成类似的操作。 + +```SQL +select `ename`, `sal`, `dname` from `tb_emp` as `t1` natural join `tb_dept` where ( - select count(*) from `tb_emp` as `t2` - where `t1`.`dno`=`t2`.`dno` and `t2`.`sal`>`t1`.`sal` + select count(*) from `tb_emp` as `t2` + where `t1`.`dno`=`t2`.`dno` and `t2`.`sal`>`t1`.`sal` )<2 order by `dno` asc, `sal` desc; -> ``` +``` \ No newline at end of file