SQL语句总结

力扣数据库
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');```

你可能感兴趣的:(SQL语句总结)