这些查询都是 equi join 的表示吗?
我发现两者都返回相同的结果。
查询 1:
SELECT C.* FROM [Case] A, [Event] B, Notice C
WHERE A.CaseID = B.CaseID
AND B.EventID = C.EventID
查询2:
SELECT C.* FROM [Case] A
join [Event] B on A.CaseID = B.CaseID
join Notice C on B.EventID = C.EventID
请澄清。
最佳答案
是的,相同的查询,不同的语法。
第二个查询最好写成:
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
子句分开
关于sql-server - 等值连接的 SQL Server 查询表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193353/