gpt4 book ai didi

SQL递归CTE查询错误 'invalid column name - level'

转载 作者:行者123 更新时间:2023-12-02 09:00:00 24 4
gpt4 key购买 nike

尝试编写递归 CTE 查询,不断收到以下错误:level,无效列名

这是查询,我哪里出错了?

WITH OwnerHierarchy AS (
SELECT PairID,
ChildID,
ParentID,
0 AS level
FROM BusinessHierarchy
UNION ALL
SELECT e.PairID,
e.ChildID,
e.ParentID,
level + 1 AS level
FROM BusinessHierarchy AS e
JOIN BusinessHierarchy AS eh ON e.ParentID = eh.ParentID)
SELECT PairID,
ChildID,
ParentID,
level
FROM OwnerHierarchy AS OwnerHierarchy_1
ORDER BY level, ChildID, ParentID

这是 MS SQL Server 2005。

最佳答案

您发布的内容存在三个问题:

WITH OwnerHierarchy AS (
SELECT a.pairid,
a.childid,
a.parentid,
0 AS level
FROM BusinessHierarchy a
WHERE a.parentid IS NULL -- Point #1, see below
UNION ALL
SELECT b.PairID,
b.ChildID,
b.ParentID,
oh.level + 1 AS level
FROM BusinessHierarchy AS b
JOIN OwnerHierarchy oh ON oh.childid = b.parentid) -- Points #2 & 3, see below
SELECT x.PairID,
x.ChildID,
x.ParentID,
x.level
FROM OwnerHierarchy x
ORDER BY x.level, x.ChildID, x.ParentID

积分:

  1. UNION 的上半部分缺少确定根节点/记录/行的内容。我假设,希望是正确的......
  2. 您正在将 BusinessHierarchy 加入自身,而引用应该是 CTE 名称
  3. CTE 和原始表之间的关系需要正确且方向正确

使用表别名的属性,但它们的使用并不一致,并且它们应该尽可能简短。定义它们时不需要使用 AS,这只是该部分的样式问题。

结论


我认为表别名将处理 level 列未找到的问题,但不是 100%。

关于SQL递归CTE查询错误 'invalid column name - level',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com