在列别名上联接的SQL语法
在这种情况下,我需要在公共列名上连接表。我有一些SQL示例,显示了我正在尝试做的事情在列别名上联接的SQL语法,sql,sql-server,Sql,Sql Server,在这种情况下,我需要在公共列名上连接表。我有一些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 @
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部分,在这里我不能在表中的列名上连接,而是在该列名的别名上连接?这样:
select EntityId
from (select assetid as EntityId from @t) t
inner join @x x on x.id = t.EntityId
这样:
select EntityId
from (select assetid as EntityId from @t) t
inner join @x x on x.id = t.EntityId
这样:
select EntityId
from (select assetid as EntityId from @t) t
inner join @x x on x.id = t.EntityId
这样:
select EntityId
from (select assetid as EntityId from @t) t
inner join @x x on x.id = t.EntityId
您需要使用CTE或内联视图子查询。滚动至SELECT语句的逻辑处理顺序
这与不能在WHERE子句中使用列别名,或者除ORDER BY子句外的任何其他地方使用列别名的原因相同。您需要使用CTE或内联视图子查询。滚动至SELECT语句的逻辑处理顺序
这与不能在WHERE子句中使用列别名,或者除ORDER BY子句外的任何其他地方使用列别名的原因相同。您需要使用CTE或内联视图子查询。滚动至SELECT语句的逻辑处理顺序
这与不能在WHERE子句中使用列别名,或者除ORDER BY子句外的任何其他地方使用列别名的原因相同。您需要使用CTE或内联视图子查询。滚动至SELECT语句的逻辑处理顺序
这与不能在WHERE子句中使用列别名,或者在ORDER BY子句之外的任何其他地方使用列别名的原因相同。为什么要这样做?为什么不直接从@t t internal join@x x on x.id=t.assetidYes中选择assetid作为EntityId,这就是上面的成功示例。我没有列出原因。我只是想知道“怎么做”。我确实有一个合理的理由来解释“为什么”。这不完全一样。有几种不同的“方法”,但与成功的例子相比,它们并不那么明显,至少在不知道“为什么”的情况下,你为什么要这么做?为什么不直接从@t t internal join@x x on x.id=t.assetidYes中选择assetid作为EntityId,这就是上面的成功示例。我没有列出原因。我只是想知道“怎么做”。我确实有一个合理的理由来解释“为什么”。这不完全一样。有几种不同的“方法”,但与成功的例子相比,它们并不那么明显,至少在不知道“为什么”的情况下,你为什么要这么做?为什么不直接从@t t internal join@x x on x.id=t.assetidYes中选择assetid作为EntityId,这就是上面的成功示例。我没有列出原因。我只是想知道“怎么做”。我确实有一个合理的理由来解释“为什么”。这不完全一样。有几种不同的“方法”,但与成功的例子相比,它们并不那么明显,至少在不知道“为什么”的情况下,你为什么要这么做?为什么不直接从@t t internal join@x x on x.id=t.assetidYes中选择assetid作为EntityId,这就是上面的成功示例。我没有列出原因。我只是想知道“怎么做”。我确实有一个合理的理由来解释“为什么”。这不完全一样。有几种不同的“方法”,但与成功的例子相比,它们并不那么明显,至少不知道“为什么”