1、时间可以进行排序,也可以用聚合函数对时间求最大值max(时间)
例如下面的例子:取最晚入职的人,那就是将入职时间倒序排序,然后limit 1
表:
场景:查找最晚入职员工的所有信息
select * from employees order by hire_date desc limit 1
方法二:子查询
select * from employees where hire_date=(select max(hire_date) from employees)
2、 limit可以单独两个参数使用,也可以和offset一起使用
例如:
表:
业务需求:
代码:limit两个参数单独使用:倒序排序,从第三行开始显示,显示一行数据
select * from employees order by hire_date desc limit 2,1
或者:结合offset使用:
select * from employees order by hire_date desc limit 1 offset 2
3、内连接、左连接、右连接的连接后表的合并情况:
(1)两表内连接的结果是将后面的表拼接在前面的表后面
看例子:两个表:
内连接代码:
select *
from salaries sa join dept_manager de on sa.emp_no=de.emp_no
结果:
(2)右连接
两个表:
上面的表右连接下面的表,代码如下:
select *
from employees e right join dept_emp d on e.emp_no=d.emp_no
结果:
虽然是右连接,但是上面的表在right join的前面,前面的表右连接后面的表,那前面的表就在最后的结果中在前面展示,后面的表在后面展示,但是右连接是保留后面的表的所有行
4、新型思路:找第二大的数据,先把第一大的数据筛选掉,然后再在表格中找第一大也就是原本表格的第二大的数据了
表:
需求:
代码:
select e.emp_no,s.salary,e.last_name,e.first_name
from employees e join salaries s on e.emp_no=s.emp_no
where s.salary=(select max(s2.salary)from salaries s2where s2.salary<(select max(salary) from salaries)
)
题解:
结果: