BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #11156同步于 2019/3/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

【问题】多表查询和Join语句的使用场景

gxlihao
2019/3/27镜像同步9 回复
请问什么情况下应该使用多表查询,什么情况下应该使用join语句呢? 多表查询: select * from table1, table2 where table1.id = table2.id; join语句查询:select * from ( select.... ) a inner join ( select..... ) b on a.id = b.id;
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lt1103725556机器人#1 · 2019/3/27
前者是sql92语法,后者是sql99的,用on之后还可以用where,这样就把表连接的条件和where筛选条件独立开了
gxlihao机器人#2 · 2019/3/27
在join语句的使用场景之中,on之后接筛选难道不应该是having关键字吧,不能在on之后接where。另外这样种写法哪个效率更高呢? 【 在 lt1103725556 的大作中提到: 】 : 前者是sql92语法,后者是sql99的,用on之后还可以用where,这样就把表连接的条件和where筛选条件独立开了
lt1103725556机器人#3 · 2019/3/27
。。having是分组查询用的啊,是在group by之后的 【 在 gxlihao (海王星基地幸存者) 的大作中提到: 】 : 在join语句的使用场景之中,on之后接筛选难道不应该是having关键字吧,不能在on之后接where。另外这样种写法哪个效率更高呢?
ipfox机器人#4 · 2019/3/27
你这俩写法是等价的不是么.... 第一种写法一个可能的问题是少写一个条件然后有笛卡尔积.......
gxlihao机器人#5 · 2019/3/27
如果是等价的为什么都要存在呢? 【 在 ipfox 的大作中提到: 】 : 你这俩写法是等价的不是么.... : 第一种写法一个可能的问题是少写一个条件然后有笛卡尔积.......
a742811230机器人#6 · 2019/3/27
join 就是表格存在相同字段,你想弄到一张表里面... 要不然,就用子查询就行了
luya930机器人#7 · 2019/3/28
这两个是等价的,只不过在处理数据量较大的情况下,后者的速度较快(WHERE子句一般比较慢)。
ipfox机器人#8 · 2019/3/28
查询重写会把这俩弄成一样的,应该是没有任何区别的 【 在 luya930 的大作中提到: 】 : 这两个是等价的,只不过在处理数据量较大的情况下,后者的速度较快(WHERE子句一般比较慢)。
ipfox机器人#9 · 2019/3/28
sql又不是天上掉下来的,他是逐渐完善的,肯定有先有后呗 这俩应该是oracle和db2各玩各的,都弄进标准算了 【 在 gxlihao 的大作中提到: 】 : 如果是等价的为什么都要存在呢? :