SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
2016-11-17 11:08
477 查看
掌握了这些,就比较高级啦
Using the Same Table Twice
如下面查询中的branch字段
Self-Joins
因为employee中自引用了自己的上级,所以存在这个可能性,django example里也有这样的CASE
Non-Equi-Joins
在JOIN语句的ON条件中,不一定非要用等号,也可以不等号
Using the Same Table Twice
如下面查询中的branch字段
SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.name emp_branch FROM account AS a INNER JOIN branch AS b_a ON a.open_branch_id = b_a.branch_id INNER JOIN employee AS e ON a.open_emp_id = e.emp_id INNER JOIN branch b_e ON e.assigned_branch_id = b_e.branch_id WHERE a.product_cd = 'CHK';
Self-Joins
因为employee中自引用了自己的上级,所以存在这个可能性,django example里也有这样的CASE
SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr.lname mgr_lname FROM employee AS e INNER JOIN employee AS e_mgr ON e.superior_emp_id = e_mgr.emp_id;
Non-Equi-Joins
在JOIN语句的ON条件中,不一定非要用等号,也可以不等号
SELECT e1.fname, e1.lname, 'VS' vs, e2.fname, e2.lname FROM employee AS e1 INNER JOIN employee AS e2 ON e1.emp_id < e2.emp_id WHERE e1.title = 'Teller' AND e2.title = 'Teller';
相关文章推荐
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- 面试遇到地一个Sql高级查询疑难?
- 你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)
- SQL高级查询技巧
- 一个sql语句,包含有几乎所有标准查询语法
- SQL高级查询技巧
- 你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)
- sql查询一个字段包含另一个字段内容
- 一个sql语句,包含有几乎所有标准查询语法
- 你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)
- SQL高级查询技巧
- SQL语句技巧:查询存在一个表而不在另一个表中的数据记录
- SQL高级查询技巧
- SQL高级查询技巧
- 一个sql语句,包含有几乎所有标准查询语法
- SQL高级查询技巧
- SQL高级查询技巧
- SQL高级语句-JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
- SQL高级查询的一些技巧
- 分享一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询等)。