SQL Server查询equi连接的表示

时间:2010-02-03 16:08:20

标签: sql-server sql

这些查询是否都是equi join的表示?

我发现两者都返回相同的结果。

查询1:

SELECT C.* FROM [Case] A, [Event] B, Notice C
WHERE A.CaseID = B.CaseID
AND B.EventID = C.EventID

QUERY2:

SELECT C.* FROM [Case] A
join [Event] B on A.CaseID = B.CaseID
join Notice C on B.EventID = C.EventID

请澄清。

2 个答案:

答案 0 :(得分:4)

是的,相同的查询,不同的语法。

第二个查询最好写成:

SELECT C.* 
FROM [Case] A 
inner join [Event] B on A.CaseID = B.CaseID 
inner join Notice C on B.EventID = C.EventID

使用ANSI语法的第二个查询比第一个查询具有一些优势:

  • 当您缺少ON条款
  • 时很容易看到
  • 明确了正在进行的
  • JOIN子句与WHERE子句
  • 分开

答案 1 :(得分:0)

在FROM子句中使用逗号时,它与关键字JOIN相同。通常,您将使用INNER JOIN或OUTER JOIN形式,从而提供更有效的结果。