Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接列在两个表中具有相同名称时的T-SQL语法缩写?_Sql_Sql Server_Tsql_Join_Syntax - Fatal编程技术网

连接列在两个表中具有相同名称时的T-SQL语法缩写?

连接列在两个表中具有相同名称时的T-SQL语法缩写?,sql,sql-server,tsql,join,syntax,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; 在…

在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;
在…规范中,这样一个
的缩写是否可能?(我希望答案是“不”,但我想确定一下。)

若否,有何特别原因?(例如,当连接两个以上的表时,是否可能导致频繁的列歧义,因此没有什么实际用途?

ANSI 92 SQL标准中有一个

SELECT … FROM T1 NATURAL JOIN T2
但是,SQL Server中不支持这一点。可能是一件好事,因为如果不明确指定连接的列,可能会有歧义

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

    FROM T1 JOIN T2 ON X;
  • 在SQLServer(T-SQL)中,没有这样的快捷方式。您必须键入所有的
    JOIN
  • 在Oracle(P-SQL)中,
    自然联接将匹配两个表中具有相同名称的列
  • 在MySQL中,
    使用
    在详细程度上介于SQL Server和Oracle之间。您只需使用(col1、col2、col3)编写一次列名称
    A JOIN B

NATURAL JOIN
是ANSI SQL中的一种,但是我们知道,没有一家主要的SQL供应商完全支持该标准。每个标准都有自己的补充和偏差。

不,请键入。您只需键入一次查询。不管怎样,有些工具甚至可以加快速度。RE:含糊不清只是将一个新列添加到一个连接表中,而该表恰好与另一个表中的现有列具有相同的名称(和类型?)。MySQL使用了
。当然,例如,你可以有一个customers表和一个orders表,并期望它们都在“customerID”上联接,但如果它们都有一个“status”字段,它将尝试在这两个字段上联接columns@JamieA:智能RDBMS是否仅对参与(显式定义)的列执行联接外键关系?如果两个表都有一个
CustomerID
和一个
Status
字段,并且两个列都通过FK约束链接,那么
自然联接确实是不明确的——但这样的RDBMS可能会警告您并拒绝执行联接。@JamieA:(续:)如果这样的RDBMS支持架构绑定,它甚至可以拒绝在两个表之间创建第二个FK约束,例如,如果存在在这些表之间执行自然联接的预先存在的视图。这将迫使您在创建第二个FK关系之前,首先将视图的自然连接替换为更明确的连接。我的结论是:如果自然连接需要FK约束形式的“连接模板”,那么似乎不会有任何歧义。