关于 FROM a,b 和 a LEFT JOIN b 的区别 ...

关于 FROM a,b 和 a LEFT JOIN b 的区别 ...,第1张

一、返回的结果不同

FROM a,b查询a、b里面所有的数据。如例句:SELECT * FROM a,b WHERE a.id=b.id,也就是a与b表返回关联的数据。

FROM a LEFT JOIN b关键字会从左表a那里返回所有的行,即使在右表b中没有匹配的行。如例句:SELECT * FROM a LEFT JOIN b ON a.id=b.id,也就是返回a与b表关联的数据及空值。

二、适用范围不同

SELECT * FROM a,b 只适合某种数据库,如SQL server,而在oracle不可用。

SELECT * FROM a LEFT JOIN b 在SQL server、oracle中都可用。

扩展资料

from a join b 与 from a, b 产生的临时表结果集 都是执行笛卡尔积即(select * from a cross join b )两表的行乘积数。

on :与取得结果集同步进行数据刷选及过滤。

where : 获得结果集之后,才进行数据刷选及过滤。

执行顺序:on在上游,where在中游,having在下游。

select * from a, b 的意思是从表a跟表b的关联表中查找数据。其中a表跟b表使用的是join方式连接查询。

连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是区别于其它类型数据库管理系统的一个标志。

扩展资料

内连接的连接查询结果集中仅包含满足条件的行,内连接是SQL Server缺省的连接方式,可以把INNER JOIN简写成JOIN,根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。

交叉连接的连接查询结果集中包含两个表中所有行的组合;外连接的连接查询结果集中既包含那些满足条件的行,还包含其中某个表的全部行,有3种形式的外连接:左外连接、右外连接、全外连接。

参考资料来源:百度百科-join()

没什么差别,select a.* from a 只是为了在多表查询时,区别开来

比如:select a.AA, b.AA from a, b

a, b 中都有 AA 字段, select *,* from 就会 起冲突,数据库不知道要取那个字段的值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9967812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存