sql-server - ON 是语法的一部分

标签 sql-server tsql

是否可以不指定条件而写内连接或外连接? ON 条件 是连接条件语法的一部分吗?

最佳答案

使用 ANSI SQL-92 语法时,ON 关键字是连接的一部分,交叉连接 除外,因为您不这样做这种关系没有条件。

例如。

内连接

SELECT *
FROM tableA INNER JOIN tableB
       on tableA.ID = tableB.ID

交叉连接

SELECT *
FROM tableA CROSS JOIN tableB

ON 应该跟在连接表之后(像 INNER 和 OUTER 这样的连接),这样就不会出现语法错误。但如果您使用 ANSI SQL-89 语法,则省略 ON 关键字,但您必须在 where 子句 上指定关系

例如。

内连接

SELECT *
FROM tableA, tableB
WHERE tableA.ID = tableB.ID

交叉连接

SELECT *
FROM tableA, tableB

它很容易出错,因为如果您忘记了条件,它不会生成语法错误,并且可能会执行交叉连接

关于sql-server - ON 是语法的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768587/

相关文章:

sql - 查询以列出与特定表关联的作业名称和步骤

sql - 在 SQL Server 中检查列的值是否为空

sql-server - SQL Server 相当于 Oracle 的 “when no data found” 异常

tsql - sql如何计算ISNUMERIC(ISNULL(VALUE, 'blah' ))

sql-server - 将 IF ...ELSE 语句添加到存储过程以跳过重复的主键

sql - 从当前日期开始创建相隔一个月的日期列表

sql-server - 使用同步框架时,如何在客户端使用 SQL Server 更改跟踪服务器端跟踪更改?

c# - 参数化动态sql查询

sql-server - TABLOCK 与 TABLOCKX

sql-server - 从具有另一个(唯一)字段的多个表中查找主 ID