Select AS WHERE的解决方案



在TSQL中是否有办法在WHERE子句中使用变量/别名?

Select First_Name as FN from PERSON
Where FN like 'D%'

我问的原因是,如果我有嵌套选择怎么办?我必须把整个嵌套的选择语句再次在我的Where子句过滤吗?

正如许多类似的问题所指出的那样,答案是"不"。解决方案通常是CTE或子查询。这个"limitation"是SQL语言的属性,而不是特定数据库的属性。

SQL Server确实有第三种方法(这就是我回答的原因)。这更适合于复杂的表达式。你的例子不是一个很好的例子,但是你可以使用outer apply:

select p2.fn
from person p outer apply
     (select p.First_Name as FN) p2
where p2.fn like 'D%'

仅当您在From子句中放置"嵌套选择"(这被称为子查询):

select FN 
from (select First_Name as FN 
      from PERSON) z

最新更新