关于MySql 4.0.12左联接left outer join的一些问题

原创 2007年09月21日 16:25:00

1.department表的创建

CREATE TABLE `department` (
  `id` int(8) NOT NULL auto_increment,
  `department_name` varchar(8) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM

2.employee表的创建

CREATE TABLE `employee` (
  `id` int(8) NOT NULL auto_increment,
  `name` varchar(8) NOT NULL default '',
  `department_id` int(8) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM

3。department表与employee表数据

department表数据如下

department 数据

employee表数据如下:

employee数据
4.没有条件限制时
select
d.*,
e.*
from
department d
left outer join
employee e
on (d.id=e.department_id)
查询结果如下:


5。条件限制为d.id=2时select
d.*,
e.*
from
department d
left outer join
employee e
on (d.id=e.department_id)
and d.id=2

查询结果如下:

6。条件限制为d.id=1时
select
d.*,
e.*
from
department d
left outer join
employee e
on (d.id=e.department_id)
and d.id=1 

查询结果如下:

7.让我感到疑问的是:左联接的查询会先把左边表(这里为department 表)全部先出来,然后再根据on(....)条件" on (d.id=e.department_id)" 和and 条件"and d.id=1 "去查询记录,然后与左边的表对应起来,而不是说先根据对左边表的限制(d.id=1)选取相应的记录去做左联接.

以上只是针对mysql 4.0.12做的测试,不知在oracle下会是怎样的结果,还有就是mysql中用到左联接时,and  条件不能放到where中,否则不能实现左联接,

 

 

Access Left Outer Join 关联多个表

Access 支持三表或三表以上的 join 操作,但是要加括号,一层一层 JOIN 下去 例子: 1、SELECT * from XXas a left outer join YY as b  ...
  • wang_cel
  • wang_cel
  • 2014年03月07日 15:34
  • 1821

Oracle中Left Outer Join和外关联(+)的区别

Oracle中Left Outer Join和外关联(+)的区别
  • lenovouser
  • lenovouser
  • 2016年02月04日 09:13
  • 1210

postgresql 左连接三张表

postgresql 左连接三张表:   select A.col1, B.col2, C.col3 from (A left join B on a.col3 = b.col1)       ...
  • snn1410
  • snn1410
  • 2012年07月17日 09:41
  • 4092

mysql中left join,right join,inner join,outer join的用法详解【转】

非常惭愧用了这么久的mysql居然没有用过outer join和inner join,对outer join的认识也仅是知道它是外连结,至于什么用途都不清楚,至于还有没有left outer join...
  • lelexy
  • lelexy
  • 2010年01月12日 20:06
  • 23024

如何在同一张数据库表上两次施加左联接(left outer join)!

    今天拼sql时遇到一个问题:             我有两张表:1.客户档案表(CT_CYK_CustomerBaseInfo),2.客户的基本信息表(T_BD_Customer )。   ...
  • hepenghit
  • hepenghit
  • 2010年02月03日 19:19
  • 4012

mysql中left join,right join,inner join,outer join 用法详解

非常惭愧用了这么久的mysql居然没有用过outer join和inner join,对outer join的认识也仅是知道它是外连结,至于什么用途都不清楚,至于还有没有left outer join...
  • onlyquan3
  • onlyquan3
  • 2016年12月09日 14:46
  • 1096

oracle中右表有过滤条件的left outer join

oracle中left outer join就是以左表作为基表来进行连接操作,连接的结果中一定会涵盖基表中所有的列,即使有某些列与右表找不到匹配关系。如下分别是city表和stds表中的数据截图: ...
  • jeryjeryjery
  • jeryjeryjery
  • 2017年04月12日 20:51
  • 1162

图解SQL的各种连接(Inner join,outer join,left join,right join)

关于 SQL Join 的文章是一篇非常棒的新手入门指南。由于 SQL Join 似乎被默认为基础,同时利用文氏图表来解释它,乍一看似乎是很自然的选择。然而,就像文章评论里说的,我也发现在实际测试中,...
  • zhushuhai331
  • zhushuhai331
  • 2016年01月07日 16:43
  • 6598

left join(左联接)right join(右联接) inner join(等值连接) 区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连...
  • zhouranlovesmile
  • zhouranlovesmile
  • 2017年03月10日 20:12
  • 349

SQL中的left outer join,inner join,right outer join用法详解

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接类型                                     ...
  • wbbzj2006
  • wbbzj2006
  • 2014年08月03日 15:10
  • 13328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于MySql 4.0.12左联接left outer join的一些问题
举报原因:
原因补充:

(最多只允许输入30个字)