为了提高效率,我试图找出是否有一种语法允许我在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';
答案 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)
至少有两种方法可以对列进行双重别名,而不是使用您选择的语法。
考虑用视图替换table2,您可以在视图中根据需要为列添加别名。
考虑子查询,因此将table2替换为另一个select语句
选择* 来自A join (从B中选择Col1 ColAlias)C 在A.ColName = ColAlias