Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
SQL Server/TSQL:在联接中对表别名上的列使用别名_Sql_Sql Server_Tsql_Syntax_Alias - Fatal编程技术网

SQL Server/TSQL:在联接中对表别名上的列使用别名

SQL Server/TSQL:在联接中对表别名上的列使用别名,sql,sql-server,tsql,syntax,alias,Sql,Sql Server,Tsql,Syntax,Alias,为了提高效率,我试图找出是否有一种语法允许我完全在from部分和join部分中使用表别名为表上的列添加别名 我知道我可以在SELECT中为列别名,但如果我使用SELECT*我知道,这不是一个好的做法,它将不可用。我总结了一个示例来说明如何引用列名doubleAlias: 在SQL Server中,可以使用外部应用: 在SQL Server中,可以使用外部应用: 至少有两种双别名列的方法,只是不使用您选择的语法 考虑将表2替换为视图,您可以在视图中对列进行任意别名 考虑一个子查询,用另一个sele

为了提高效率,我试图找出是否有一种语法允许我完全在from部分和join部分中使用表别名为表上的列添加别名

我知道我可以在SELECT中为列别名,但如果我使用SELECT*我知道,这不是一个好的做法,它将不可用。我总结了一个示例来说明如何引用列名doubleAlias:


在SQL Server中,可以使用外部应用:


在SQL Server中,可以使用外部应用:


至少有两种双别名列的方法,只是不使用您选择的语法

考虑将表2替换为视图,您可以在视图中对列进行任意别名

考虑一个子查询,用另一个select语句替换表2

挑选* 从一个连接 从B C中选择Col1 ColAlias 在A.ColName=ColAlias上


至少有两种双别名列的方法,只是不使用您选择的语法

考虑将表2替换为视图,您可以在视图中对列进行任意别名

考虑一个子查询,用另一个select语句替换表2

挑选* 从一个连接 从B C中选择Col1 ColAlias 在A.ColName=ColAlias上


可以将表包装在CTE中,在CTE中可以指定新列名

WITH t2 AS (
    SELECT *, column1 AS doubleAlias
    FROM [table2] 
)
SELECT *
FROM [table1] AS tl
JOIN t2
   ON t1.[column1] = t2.[doubleAlias]
WHERE t2.doubleAlias = 'value';

可以将表包装在CTE中,在CTE中可以指定新列名

WITH t2 AS (
    SELECT *, column1 AS doubleAlias
    FROM [table2] 
)
SELECT *
FROM [table1] AS tl
JOIN t2
   ON t1.[column1] = t2.[doubleAlias]
WHERE t2.doubleAlias = 'value';

不……….如果您真的想在选择之前使用别名,您可以使用apply语句而不是join语句。您的目标是什么?这个问题是问如何完成一项不可能完成的任务,尽管你应该提到你想要完成的任务,即WHERE t2有什么问题。[column1]=“value”。我分析了大量程序生成的代码,通常在WHERE子句的范围内工作。经常会有预先建立的表别名,并出于所述目的询问问题;效率和潜在的语法知识不足。不……….如果您真的想在选择之前使用别名,可以使用apply语句而不是join。您的目标是什么?这个问题是问如何完成一项不可能完成的任务,尽管你应该提到你想要完成的任务,即WHERE t2有什么问题。[column1]=“value”。我分析了大量程序生成的代码,通常在WHERE子句的范围内工作。经常会有预先建立的表别名,并出于所述目的询问问题;效率和潜在的语法知识不足。这难道不会让你第三次看到column1吗?如果使用内部连接,为什么使用外部应用而不是交叉应用?@AnthonyHancock。我理解第一个问题。这只是使用select*。我转而从两张桌子中进行选择。至于外部应用与应用。两个字都可以。我选择OuterApply只是因为它强调不管条件如何,第一个表中的所有行都会被保留。这难道不会给column1第三次吗?如果使用内部连接,为什么使用外部应用而不是交叉应用?@AnthonyHancock。我理解第一个问题。这只是使用select*。我转而从两张桌子中进行选择。至于外部应用与应用。两个字都可以。我选择OuterApply只是因为它强调不管条件如何,都会保留第一个表中的所有行。
WITH t2 AS (
    SELECT *, column1 AS doubleAlias
    FROM [table2] 
)
SELECT *
FROM [table1] AS tl
JOIN t2
   ON t1.[column1] = t2.[doubleAlias]
WHERE t2.doubleAlias = 'value';