【leftjoin】leftjoin与rightjoin区别如果紧紧只是说以前的表为主表就用left...

发布时间:2021-03-23 16:51:50

left join 与 right join 区别如果紧紧只是说以前的表为主表就用left join ,后面的表为主表就用right join的话.那怎么就不把前后两个表的位置换一下?这样不是只要一个左或者右链接就行了?

网友回答

【答案】 A left join B 的连接的记录数与A表的记录数同
  A right join B 的连接的记录数与B表的记录数同
  A left join B 等价B right join A
  table A:
  Field_K,Field_A
  1 a
  3 b
  4 c
  table B:
  Field_K,Field_B
  1 x
  2 y
  4 z
  select a.Field_K,a.Field_A,b.Field_K,b.Field_B
  from a left join b on a.Field_K=b.Field_K
  Field_K Field_A Field_K Field_B
  ---------- ---------- ---------- ----------
  1 a 1 x
  3 b NULL NULL
  4 c 4 z
  select a.Field_K,a.Field_A,b.Field_K,b.Field_B
  from a right join b on a.Field_K=b.Field_K
  Field_K Field_A Field_K Field_B
  ---------- ---------- ---------- ----------
  1 a 1 x
  NULL NULL 2 y
  4 c 4 z --
  举个例子:
  假设a表和b表的数据是这样的.
  a b
  id name id stock
  1 a 1 15
  2 b 2 50
  3 c
  select * from a inner join b on 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 一样
  --------------------------------
  select * from a left/right join b on a.id=b.id
  这个是外连接语法中的左外连接或右外连接
  如果是左外连接的话,它将显示a表的所有记录,
  select a.*,b.* from a left join b on a.id=b.id
  查询的结果是这样的:
  a.id name b.id stock
  1 a 1 15
  2 b 2 50
  3 c null null
  --------------------------------------------
  如果是右外连接的话,它将显示b表的所有记录,
  select a.*,b.* from a right join b on a.id=b.id
  查询的结果是这样的:
  a.id name b.id stock
  1 a 1 15
  2 b 2 50
  --
  select a.*,b.* from a left join b on a.k = b.k
  select a.*,b.* from a left outer join b on a.k =b.k
  ----------上面两种一样left join是left outer join的简写
  select a.*,b.* from a left inner join b on a.k = b.k
  没有这种写法,错误的语句.
以上问题属网友观点,不代表本站立场,仅供参考!