SQL连接条件

时间:2013-11-25 07:14:00

标签: sql join

假设我们有两个表 - 客户和交易

Customer                       Transaction T
-----------                      ----------------
Cust_Id                          Cust ID
Cust name                        Items 
Cust Address                     Date    
Flag

如果我加入这些表格, -

select * from Customer C
inner join Transaction T
on C.Cust_id=T.Cust_id
Where C.Flag= 'Y'

OR

select * from Customer C
inner join Transaction T
on C.Cust_id=T.Cust_id
AND C.Flag='Y'

请有人告诉我两个查询的功能差异(请参阅两个查询的最后一行)

3 个答案:

答案 0 :(得分:2)

在内部联接的情况下,没有区别。两者都以相同的方式工作。查询优化器最终将它们视为相同。

以下链接将帮助您更好地理解

Link Here

答案 1 :(得分:0)

两个条件都相同但我认为第一个查询比第二个

更快

答案 2 :(得分:0)

ON子句也像WHERE子句一样过滤,区别在于没有JOIN子句就不能存在ON过滤器。

对于INNER JOIN子句,它们被视为相同,但在LEFT或RIGHT连接的情况下,ON过滤器起着重要作用。

实际上,你不能按其他表中不存在的列过滤LEFT(RIGHT)JOIN的结果,标准做法是将那些列i置于过滤器上。