sql-server - 等值连接的 SQL Server 查询表示

标签 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

查询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/

相关文章:

sql-server - SQL Server表更改时更新Elastic Search索引

sql - 从重复值中获取最新值

mysql - 从 .csv 文件加载表格数据的最快方法?

sql - 将某个时间段内的所有日期插入表中

SQL 代码问题 - 为什么在创建表之前需要删除表

sql服务器: Lower function on Indexed Column

SQL Server 锁定整个表,尽管不需要

mysql - SQL 查询内连接并限制最多 3 个最近的连接

sql - Azure SQL Server - 无法访问 "database.usgovcloudapi.net"?

sql-server - SQL Server 代理作业在作业历史记录中记录自定义消息