数据库 inner join ,left join,right join 的区别
inner join: 内连接,结果只包含满足条件的列。
left join:左外连接,结果包含满足条件的行及左侧表中的全部行。
right join :右外连接,结果包含满足条件的行及右侧表中的全部行。
SQL语句(inner join,left out join,right out join)
left join  :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。
right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。
inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。
full join:外连接,返回两个表中的行:left join + right join
cross join:结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
declare @a table(a int,b int)
declare @b table(a int,b int)
insert @a values(1,1)
insert @a values(2,2)
insert @b values(1,1)
insert @b values(3,3)
select * from @a
select * from @b
--左:
select * from @a Aa left join @b Bb on Aa.a=Bb.a
--右:
select * from @a Aa right join @b Bb on Aa.a=Bb.a
--内
select * from @a Aa inner join @b Bb on Aa.a=Bb.a
--外:
select * from @a Aa full join @b Bb on Aa.a=Bb.a
--交叉连接
select * from @a  cross join @b
left 以左边为准右边有则显示无则NULL
right反之
inner只取都不null的,相当于用from a,b where ?=?(连接是on ? = ?)
left join 和 left outer join 的区别
通俗的讲: 
  A   left   join   B   的连接的记录数与A表的记录数同 
  A   right   join   B   的连接的记录数与B表的记录数同   
  A   left   join   B   等价B   right   join   A 
   
举个例子: 
  假设a表和b表的数据是这样的。 
  a                         b   
  id     name  id     stock   
  1  a             1         15 
  2         b             2         50 
  3         c                 
   
  select   *   from   a   inner   join   b   onconnect和join的区别   a.id=b.id 
  这个语法是连接查询中的内连接,它产生的结果是 
  两个表相匹配的记录出现在结果列表中。 
  根据上面的表,出现的结果是这样的 
  a.id     name     b.id     stock 
  1       a             1         15 
  2             b             2         50 
  ---------------------------- 
  select   *   from   a,b   where   a.id=b.id 
  这个语法是内连接的另外一种写法,其执行结果与inner   join   一样 
   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。