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