sql语句真实场景
gitee地址
https://gitee.com/xuthus5/Database-SQL-Actual-Combat/blob/master/README.md#https://gitee.com/link?target=https%3A%2F%2Flaunchpad.net%2Ftest-db%2Femployees-db-1%2F1.0.6
结合sql练习来看https://wwu.lanzouq.com/itJrv04wtveb
员工表与部门管理者表
员工表包含所有的员工(包括姓名字段),部门管理表是只有dept_no,emo_no,from_date(入职日期),to_data(在职日期)
获取所有非manager的员工emp_no
1.使用两表查询
select e.emp_no from employees e where e.emp_no not in (select emp_no from dept_manager) # 0.232秒
2.使用查询内连接查询
待续
3.使用外键关联查询
SELECT dm.emp_no # 员工表;加个命名字段就变成了6秒 FROM dept_manager de LEFT JOIN employees dm ON de.emp_no != dm.emp_no # 返回两表中no并不相等的字段值
获取所有员工当前的manager
部门员工和部门领导表
一个部门员工可有多个部门领导表
利用dept_no 关联两表之间的数据,
SELECT de.emp_no, dm.emp_no manager_no FROM dept_emp de LEFT JOIN dept_manager dm ON de.dept_no = dm.dept_no WHERE de.to_date = '9999-01-01' AND dm.to_date = '9999-01-01' AND de.emp_no != dm.emp_no
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉
获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary
报错
1054 - Unknown column 's.salary' in 'having clause'、
作者:索匣
来源链接:https://www.cnblogs.com/wkhzwmr/p/16276397.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。