在 SQL Server 中,我似乎无法在WHERE子句中使用别名列名
这不起作用
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width
FROM X
WHERE Width > 0
Run Code Online (Sandbox Code Playgroud)
我要做
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width
FROM X
WHERE [dbo].[myFunc] (X.Prop1) > 0
Run Code Online (Sandbox Code Playgroud)
我担心的是 SQL 执行了[dbo].[myFunc] (X.Prop1)两次。
我的问题是:
WHERE子句中使用别名列?当我尝试这两种方法时,它们具有完全相同的执行计划,因此看起来查询优化器足够聪明,可以发现它们是相同的查询并运行一次......所以我认为两种方法都可以......
但是如果想使用子查询方法并使用别名,您可以使用如下所示的内容:
Select * from (
SELECT *, [dbo].[myFunc] (X.Prop1) AS Width FROM X
) T
WHERE Width > 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |