zwk2018

导航

 

题目一描述:

查找最晚入职员工的所有信息
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));


解法:

在表里搜索员工的所有信息

并按入职日期降序排序

限制查询的记录数为1

select * from employees 
order by hire_date 
desc limit 1

 

相关知识:

* ORDER BY排序
* DESC降序排序
* ASC升序排序
* LIMIT n限制查询的记录数为n

 题目二描述:

查找入职员工时间排名倒数第三的员工所有信息

 

CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));

 解法:

在表里搜索员工的所有信息

并按入职日期降序排序

限制查询的记录 用limit偏移,只取一条数据

select * from employees
order by hire_date desc limit 2,1

 

 相关知识:

* ORDER BY排序 
* DESC降序排序 
* LIMIT m,n限制查询的记录数为n条,从m+1开始查询
select * from tablename limit 2,4
即取出第3条至第6条,4条记录

 

 

题目三描述:

查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
CREATE TABLE `dept_manager` ( `dept_no` char(4) NOT NULL, `emp_no` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`dept_no`)); CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));

 输出描述:

   

 

 解法:

  • 该表是两表关联表,但是元素不能重复出现,需要去重
  • 该表的字段顺序为,salaries表的所有字段,和部门编号
  • 该表的员工编号emp_no是按顺序递增的,所以在此进行关联时,需要将salaries表置于前面
select s.*,d.dept_no from salaries as s,dept_manager as d
where s.to_date="9999-01-01"
      and d.to_date="9999-01-01"
      and d.emp_no = s.emp_no

 

posted on 2018-09-10 17:43  zwk2018  阅读(174)  评论(0)    收藏  举报