[英]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.