SQL Server / TSQL:在连接中对表别名上的列进行别名

时间:2017-05-03 20:40:53

标签: sql sql-server tsql syntax alias

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

我知道我可以在SELECT中对列进行别名,但是如果我使用select *(我知道,不是很好的做法)它就不可用了。我简要介绍了一个示例,以说明我如何引用列名称(doubleAlias):

SELECT * 
FROM [table1] AS tl
   JOIN [table2] AS t2
   ON t1.[column1] = t2.[column1] AS doubleAlias
    WHERE doubleAlias = 'value';
--INSTEAD OF
  --WHERE t2.[column1] = 'value'; 

2 个答案:

答案 0 :(得分:1)

在SQL Server中,您可以使用outer apply

SELECT t1.*, t2.*
FROM [table1] tl JOIN
     [table2] t2
     ON t1.[column1] = t2.[column1] OUTER APPLY
     (VALUES (t1.column1) ) v(doubleAlias)
WHERE doubleAlias = 'value';

答案 1 :(得分:1)

至少有两种方法可以对列进行双重别名,而不是使用您选择的语法。

  1. 考虑用视图替换table2,您可以在视图中根据需要为列添加别名。

  2. 考虑子查询,因此将table2替换为另一个select语句

    选择* 来自A join (从B中选择Col1 ColAlias)C 在A.ColName = ColAlias