数据库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));

输入描述:

输出描述:
数据库SQL实战 —— 获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'_第1张图片
本题主要是要区分谁是主表,谁是从表,根据输出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 的联结方法

你可能感兴趣的:(sql)