sql - 当 JOIN 列在两个表中具有相同名称时,T-SQL 语法缩写?

标签 sql sql-server tsql join syntax

在 T-SQL 中,当这样的联接发生在两个列上时,是否可以简化 JOIN 规范 (ON …) 以实现两个表之间的等联接两个表中的名称相同?

CREATE TABLE T1 (X … PRIMARY KEY);
CREATE TABLE T2 (X … REFERENCES T1 (X));

通常我会编写这样的(内部)连接,如下所示:

SELECT … FROM T1 JOIN T2 ON T1.X = T2.X;

我想要的是更简单的东西,例如:

SELECT … FROM T1 JOIN T2 ON X;

ON … 规范的这种缩写是否可能以某种方式实现? (我预计答案是“否”,但我想确定一下。)

如果没有,有什么特殊原因吗? (例如,当连接两个以上的表时,是否可能会导致频繁的列歧义,从而没有什么实际用途?)

最佳答案

有一个natural join符合 ANSI 92 SQL 标准

SELECT … FROM T1 NATURAL JOIN T2

但是,SQL Server 不支持此功能。这可能是一件好事,因为当您没有明确指定连接列时可能会出现歧义。

没有像你提到的语法这样的缩写

    FROM T1 JOIN T2 ON X;

关于sql - 当 JOIN 列在两个表中具有相同名称时,T-SQL 语法缩写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170859/

相关文章:

sql - db2 中有 'greatest' 函数吗?

sql - 在标量值函数中使用 Xquery

c# - 从数据库 SQLite C# 服务堆栈读取 SQL 数据(百万条记录)的最快方法是什么

c# - 如果没有数据(为空),应该保存什么(在 SQL Server 数据库中)?

java - JDBC 无法从单独的类连接到我的数据库。 DB 类创建连接

SQL Server 前 1 名

c# - 使用 LINQ 检查计划重叠

mysql - 查找SQL表中的特定数据

sql - 删除...创建与更改

sql - 在 SQL Server 2008 中使用列别名指定数据类型