[英]SQL Server/TSQL : Aliasing a column on table alias in join
為了提高效率,我試圖找出一種語法,該語法允許我在from部分和join部分中完全使用該表別名對表中的列進行別名。
我知道我可以為SELECT中的列加別名,但是如果我使用select *(我知道,不是一個好習慣),它將不可用。 我doubleAlias
了一個示例來說明如何引用列名( 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';
在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';
至少有兩種雙列別名的方法,只是不使用您選擇的語法。
考慮用視圖替換table2,您可以在視圖中根據需要為列添加別名。
考慮一個子查詢,因此用另一個select語句替換table2
在A.ColName = ColAlias上的A聯接中選擇*(從B選擇SELECT Col1 ColAlias)C
您可以將表包裝在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';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.