0
点赞
收藏
分享

微信扫一扫

WHERE条件和ON条件的区别

夏木之下 2023-07-13 阅读 39
数据库

目录

总结:

1.inner join方式关联

2.left join方式关联

实例

1.建表

2.left join 主表的on和where条件

3.left join 关联表的on和where条件


总结:

1.inner join方式关联

  • on条件(无论是对主表字段的限制还是对关联表字段的限制)和 where条件 对结果的影响一致 

2.left join方式关联

  • on条件(无论是对主表字段的限制还是对关联表字段的限制)不管结果是否为真,返回主表的所有记录,作用于生成临时表
  • where条件(无论是对主表字段的限制还是对关联表字段的限制),在join生成临时表后,返回条件为真的记录,过滤条件为不为真的记录

实例

1.建表

CREATE TABLE IF NOT EXISTS tb1
(
id STRING COMMENT 'id'
,age STRING COMMENT '年龄'
)
COMMENT '学生'
LIFECYCLE 7;

INSERT OVERWRITE TABLE tb1 VALUES
( '1' , '10' ) ,
( '2' , '20' ) ,
( '3' , '30' ) ;

CREATE TABLE IF NOT EXISTS tb2
(
age STRING COMMENT '年龄'
,name STRING COMMENT '姓名'
)
COMMENT '课程'
LIFECYCLE 7;

INSERT OVERWRITE TABLE tb2 VALUES
( '10' , 'AAA' ) ,
( '20' , 'BBB') ;

主表:tb1

关联表:tb2
idageagename
11010AAA
22020BBB
330

 

2.left join 主表的on和where条件

--left join 主表的条件在where里
SELECT * FROM tb1
LEFT OUTER JOIN tb2
ON tb1.age=tb2.age
WHERE tb1.id='2';


--left join 主表的条件在on里
SELECT * FROM tb1
LEFT OUTER JOIN tb2
ON tb1.age=tb2.age
AND tb1.id='2';

3.left join 关联表的on和where条件

--left join 关联表的条件在where里
SELECT * FROM tb1
LEFT OUTER JOIN tb2
ON tb1.age=tb2.age
WHERE tb2.name='AAA';


--left join 关联表的条件在on里
SELECT * FROM tb1
LEFT OUTER JOIN tb2
ON tb1.age=tb2.age
AND tb2.name='AAA';

 

举报

相关推荐

0 条评论