数据库SQL实战 —— 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'
时间限制:1秒 空间限制:32768K
题目描述
获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date=‘9999-01-01’
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是主表,dept_manager是从表
代码1
select s.*,d.dept_no
from salaries as s,dept_manager as d
where date(s.to_date) = ‘9999-01-01’
and date(d.to_date) = ‘9999-01-01’
and s.emp_no = d.emp_no ;
运行时间:16ms
占用内存:3296k
代码2
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 s.emp_no = d.emp_no ;
运行时间:20ms
占用内存:3432k
代码3
select s.*,d.dept_no
from salaries as s inner join dept_manager as d
on s.emp_no = d.emp_no
where s.to_date = ‘9999-01-01’
and d.to_date = ‘9999-01-01’
运行时间:16ms
占用内存:3320k
使用了join …on 的联结方法