首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL外部连接语句之间的区别

问SQL外部连接语句之间的区别
EN

Stack Overflow用户
提问于 2011-09-20 01:54:18
回答 3查看 293关注 0票数 1

我想知道这两个SQL查询之间的区别。注意:外键= dept_no

Query1:

代码语言:javascript
复制
SELECT emp_no, emp_name, emp.dept_no, dept_name, loc
from emp,dept
WHERE emp.dept (+)= dept.dept_no;

Query2:

代码语言:javascript
复制
SELECT emp_no, emp_name, emp.dept_no, dept_name, loc
from emp,dept
WHERE emp.dept = dept.dept_no(+);

基本上我的问题是关于外部连接的位置。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-20 01:57:09

outer join的位置(左或右)决定从哪个表返回所有行,即使相关表中不存在匹配的行也是如此。因此..。

第一个(left outer join)将返回所有员工信息(emp中的所有行),即使没有与部门关联。

第二个(right outer join)将返回所有部门名称和部门编号(dept中的所有行),即使没有员工属于该部门也是如此。

票数 4
EN

Stack Overflow用户

发布于 2011-09-20 02:13:20

您将问题标记为mysql,但是您正在使用的特殊outer join语法是Oracle的专有发明。

MySQL在任何位置都不支持(+)联接修饰符语法。

为什么不对LEFT OUTER JOIN和RIGHT OUTER JOIN使用ANSI SQL-92语法呢?这样,您的查询就清晰了,并且可以在Oracle和MySQL中运行。

代码语言:javascript
复制
SELECT emp_no, emp_name, emp.dept_no, dept_name, loc
FROM emp LEFT OUTER JOIN dept ON emp.dept = dept.dept_no
票数 4
EN

Stack Overflow用户

发布于 2011-09-20 02:00:44

这是Table 1 (LEFT outer join) Table 2和Table 1 (RIGHT outer join) Table 2之间的典型区别,前者提供了表1中的所有记录,包括表2中缺少关联的记录,而后者则相反。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7475159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档