为啥我会收到“无效的列名”?消息 207 级别 16 状态 1 第 14 行
Posted
技术标签:
【中文标题】为啥我会收到“无效的列名”?消息 207 级别 16 状态 1 第 14 行【英文标题】:Why do I get an "Invalid column name"? Msg 207 Level 16 State 1 Line 14为什么我会收到“无效的列名”?消息 207 级别 16 状态 1 第 14 行 【发布时间】:2020-11-12 17:11:36 【问题描述】:当我在 where 子句中使用别名引用时,为什么会收到“无效的列名”错误 Msg 207 Level 16 State 1 Line 14? 创建表临时 ( col1 nvarchar(25), col2 nvarchar(25) )
insert into temp
values ('Babahoyo', 'Ecuador'),
('Stavanger', 'Norway'),
('Seattle', 'USA'),
('New York City', 'USA')
select
row_number() over (order by col2) as N,
col1, col2
from
temp
where
n = 2
db Fiddle
【问题讨论】:
SQL Condition on Window function 这能回答你的问题吗? SQL Condition on Window function 【参考方案1】:您不能将an alias reference
放入where clause
select * from
(
select row_number() OVER (ORDER BY col2) as N, col1, col2
from temp
)A
where n = 2
【讨论】:
@user716255,你可以试试我给出的答案——使用子查询 更准确地说,您不能在where
子句中使用来自同一“范围”的 column 别名引用。 table 别名是不同的,如代码所示,来自嵌套范围(无论是子查询还是 CTE)的列别名都是有效的。【参考方案2】:
使用offset
/fetch
:
select t.*
from temp
order by col2
offset 1 row fetch 1 row only
【讨论】:
以上是关于为啥我会收到“无效的列名”?消息 207 级别 16 状态 1 第 14 行的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会收到错误消息:Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.10 及更高版本
为啥我会收到 50% 的 GCP Pub/Sub 消息重复?