力扣数据库
1.最晚入职
where条件语句查询,选定的语句用一个子查询
select * from employees
where hire_date = (select max(hire_date) from employees);
2.倒数第三
distinct:不重复
LIMIT m,n : 表示从第m+1条开始,取n条数据;
select * from employees where hire_date=(select distinct hire_date from employees order by hire_date desc limit 2,1);
3.多表连接:注意确定主表
select s.* ,d.dept_nofrom salaries as s join dept_manager as d on s.emp_no=d.emp_nowhere s.to_date = '9999-01-01' and d.to_date='9999-01-01';
4.内连接
select employees.last_name,employees.first_name,dept_emp.dept_nofrom dept_emp inner join employees on dept_emp.emp_no=employees.emp_no;
5.左连接
select e.last_name,e.first_name,d.dept_nofrom employees eleft join dept_emp don e.emp_no=d.emp_no;
6.count不能与where连用,用having表示限定条件
select emp_no,count(emp_no) as t from salariesgroup by emp_no HAVING t > 15;
7.Not in
SELECT emp_no FROM employeesWHERE emp_no NOT IN (SELECT emp_no FROM dept_manager)
8.<>的用法
SELECT dp.emp_no, dm.emp_no AS manager_noFROM dept_emp dp INNER JOIN dept_manager dmON dp.dept_no = dm.dept_noWHERE dm.to_date = '9999-01-01'AND dp.emp_no <> dm.emp_no;
9.带限定条件的内连接,用and
select title,avg(salary) as avgfrom titles ainner join salaries bon a.emp_no=b.emp_no and a.to_date = '9999-01-01' AND b.to_date = '9999-01-01'group by a.title;
10.左连接循环嵌套
SELECT em.last_name, em.first_name, dp.dept_nameFROM (employees AS em LEFT JOIN dept_emp AS de ON em.emp_no = de.emp_no)LEFT JOIN departments AS dp ON de.dept_no = dp.dept_no
11.较为复杂的语句
select de.emp_no,(de.salary-ds.salary) as growth from (select d.emp_no,d.salary from employees as e left join salaries as d
on d.emp_no = e.emp_no where d.to_date = '9999-01-01' ) as de inner join (select d.emp_no,d.salary from employees as e left join salaries as d on d.emp_no = e.emp_no where d.from_date = e.hire_date) as ds on ds.emp_no = de.emp_no order by growth;
12.连接嵌套+Not in
select de.dept_no,s.emp_no,s.salaryfrom employees e
inner join salaries son e.emp_no=s.emp_no and s.to_date='9999-01-01'
inner join dept_emp de on e.emp_no=de.emp_no
where de.emp_no not in (select emp_no from dept_manager WHERE to_date = '9999-01-01');```