一、返回的结果不同
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 就会 起冲突,数据库不知道要取那个字段的值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)