- ~
获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salary
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
));spa
select emp_no,salary from salaries where to_date = '9999-01-01' order by salary desc limit 1,1;
题目描述
查找当前薪水(to_date='9999-01-01')排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不许使用order by
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
));
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
));3d
【注意】看看讨论连接,里面有个MySQL的坑 https://www.nowcoder.com/profile/1989208/codeBookDetail?submissionId=20473665 我不知道WebSQL上求max(salaries)会把全部的最高工资显示出来,仍是只显示一个, 可是在MySQL中,只显示一个,这样若是第二高的工资人数有多个的话,上述方法会漏掉其余人, select e.emp_no, salary, last_name, first_name from employees as e inner join salaries as s where e.emp_no = s.emp_no and s.to_date='9999-01-01' and salary = (select max(salary) from salaries where salary < (select max(salary) from salaries)) 这个是个人方案。