'multi-level' CTE 中的多部分标识符无法绑定错误
Multipart identifier could not be bound error in 'multi-level' CTE
我正在尝试根据 table 中的行号获取一组特定的行。为此,我正在尝试将以下 sql 查询与通用 table 表达式 (cte) 一起使用。我在查询中标记了给我问题的部分。
我遇到的问题是不同的,因为 CTE 中的第二个查询有一个基于参数的 where 子句,所以我无法加入 table,如下所示:Sql Server CTE "multi- part identifier could not be bound."
我确定我缺少 CTE 语法的一些基础知识,因为设置本身对我来说很有意义,如果我要摆脱 CTE,我可以让它工作。有人可以告诉我我错过了什么吗?
;with cte as (
SELECT ROW_NUMBER() OVER (ORDER BY Created) RNUM, *
FROM Notes
WHERE BookId = @BookId AND Username = @Username
),
offsetrow as (
SELECT RNUM
FROM cte
WHERE cte.NoteId = @StartOffset
)
SELECT *
FROM cte
WHERE cte.RNUM > offsetrow.RNUM --The multi-part identifier 'offset.RNUM' could not be bound.
这里的问题基本上是您仅从一个结果集中进行选择 (cte
)。您的表达式代码当前生成两个:cte
和 offsetrow
.
您应该将两者连接在一起(就像连接两个经典表/视图一样)。
你错过了在最后一个 select 语句中将 offsetrow 放入 from 子句中,我的朋友。请做这样的事情:
SELECT *
FROM cte,offsetrow
WHERE cte.RNUM > offsetrow.RNUM
我遇到了同样的问题,发现如果我想从 CTE1 select 某些列然后加入 CTE2,Hiren 的解决方案不起作用。相反,我必须执行以下操作
SELECT ....
FROM CTE1
LEFT JOIN CTE2
ON CTE1.Column= CTE2.Column
这对我有用
我正在尝试根据 table 中的行号获取一组特定的行。为此,我正在尝试将以下 sql 查询与通用 table 表达式 (cte) 一起使用。我在查询中标记了给我问题的部分。
我遇到的问题是不同的,因为 CTE 中的第二个查询有一个基于参数的 where 子句,所以我无法加入 table,如下所示:Sql Server CTE "multi- part identifier could not be bound."
我确定我缺少 CTE 语法的一些基础知识,因为设置本身对我来说很有意义,如果我要摆脱 CTE,我可以让它工作。有人可以告诉我我错过了什么吗?
;with cte as (
SELECT ROW_NUMBER() OVER (ORDER BY Created) RNUM, *
FROM Notes
WHERE BookId = @BookId AND Username = @Username
),
offsetrow as (
SELECT RNUM
FROM cte
WHERE cte.NoteId = @StartOffset
)
SELECT *
FROM cte
WHERE cte.RNUM > offsetrow.RNUM --The multi-part identifier 'offset.RNUM' could not be bound.
这里的问题基本上是您仅从一个结果集中进行选择 (cte
)。您的表达式代码当前生成两个:cte
和 offsetrow
.
您应该将两者连接在一起(就像连接两个经典表/视图一样)。
你错过了在最后一个 select 语句中将 offsetrow 放入 from 子句中,我的朋友。请做这样的事情:
SELECT *
FROM cte,offsetrow
WHERE cte.RNUM > offsetrow.RNUM
我遇到了同样的问题,发现如果我想从 CTE1 select 某些列然后加入 CTE2,Hiren 的解决方案不起作用。相反,我必须执行以下操作
SELECT ....
FROM CTE1
LEFT JOIN CTE2
ON CTE1.Column= CTE2.Column
这对我有用