差异 B/W、WHERE 和 ON in SQL join 操作
Difference B/W, WHERE and ON in SQL join Operation
这里是我的测试代码,用于解释
create table Test3(id integer, name varchar(100));
insert into Test3(id, name) values(1, "Vijay");
insert into Test3(id, name) values(2, "Sandy");
insert into Test3(id, name) values(3, "Rohit");
create table Test4(id integer, surname varchar(100));
insert into Test4(id, surname) values(1, "karma");
insert into Test4(id, surname) values(2, "sharma");
这是我的查询:
select Test3.id , Test3.name , Test4.surname from Test3,Test4 where Test3.id = Test4.id;
select Test3.id , Test3.name , Test4.surname from Test3 join Test4 on Test3.id = Test4.id;
以上两个查询语句的结果与下面相同:
1 维杰业力
2 桑迪莎玛
这两种内部查询有什么区别,哪一种查询效率更高?
这两个查询在功能上是等价的。
一个使用老式的隐式连接(在 from
子句中使用逗号),另一个使用显式连接(使用 on
关键字)。
虽然这两个查询保证生成相同的结果(并且可能具有相同的性能),但我强烈建议使用显式连接语法。隐式连接在几十年前(即 ANSI 92 天)已经失宠,原因有很多,特别是因为它们更难遵循(逻辑分布在 from
子句和 where
子句之间) , 并且不能轻易转换为 left join
.
两种情况下的性能相同。
Select from multiple tables without join is nothing but a cross join. When you put a where clause to it, the query performs inner join.
这里是我的测试代码,用于解释
create table Test3(id integer, name varchar(100));
insert into Test3(id, name) values(1, "Vijay");
insert into Test3(id, name) values(2, "Sandy");
insert into Test3(id, name) values(3, "Rohit");
create table Test4(id integer, surname varchar(100));
insert into Test4(id, surname) values(1, "karma");
insert into Test4(id, surname) values(2, "sharma");
这是我的查询:
select Test3.id , Test3.name , Test4.surname from Test3,Test4 where Test3.id = Test4.id;
select Test3.id , Test3.name , Test4.surname from Test3 join Test4 on Test3.id = Test4.id;
以上两个查询语句的结果与下面相同:
1 维杰业力
2 桑迪莎玛
这两种内部查询有什么区别,哪一种查询效率更高?
这两个查询在功能上是等价的。
一个使用老式的隐式连接(在 from
子句中使用逗号),另一个使用显式连接(使用 on
关键字)。
虽然这两个查询保证生成相同的结果(并且可能具有相同的性能),但我强烈建议使用显式连接语法。隐式连接在几十年前(即 ANSI 92 天)已经失宠,原因有很多,特别是因为它们更难遵循(逻辑分布在 from
子句和 where
子句之间) , 并且不能轻易转换为 left join
.
两种情况下的性能相同。
Select from multiple tables without join is nothing but a cross join. When you put a where clause to it, the query performs inner join.