[英]SQL syntax to join on a column alias
我有一種情況,我需要在公用列名上連接表。 我有一些示例SQL可以顯示我要執行的操作。
declare @t table (assetid int)
declare @x table (id int)
insert into @t(assetid) values (1)
insert into @t(assetid) values (2)
insert into @t(assetid) values (3)
insert into @x(id) values (1)
insert into @x(id) values (2)
insert into @x(id) values (3)
-- SUCCESS
select assetid as assetid
from @t t
inner join @x x on x.id = t.assetid
-- FAIL
select assetid as EntityId
from @t t
inner join @x x on x.id = t.EntityId <-- syntax error
如何重寫上面的FAIL部分,在其中我不能加入表中的列名,而不能加入該列名的別名?
您將需要使用CTE或內聯視圖(子查詢)。 在SELECT
子句之前先評估ON
。 (滾動到“ SELECT語句的邏輯處理順序”。)
這是您不能在WHERE
子句中或在ORDER BY
子句以外的任何地方都不能使用列別名的原因。
這條路:
select EntityId
from (select assetid as EntityId from @t) t
inner join @x x on x.id = t.EntityId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.