在子查询中使用WITH(MS SQL)

 徐大总统_584 发布于 2023-02-13 18:57

我正试图在子查询中执行一些递归,但我似乎无法使用WITH- 我是否错过了某些内容或者是否有解决方法?

WHERE swn.stocknode_id in 
(
    WITH Hierachy(stocknode_id, short_desc, PARENTNODE_ID, level)

    AS

    (
        SELECT 
            a.stocknode_id,
            0 AS level

        FROM stock_website_node AS a  

        WHERE a.short_desc = 'XXXXXXXX'
        AND a.PARENTNODE_ID = 0

        UNION ALL

        SELECT 
            a.stocknode_id,
            ch.level + 1

        FROM stock_website_node AS a

        INNER JOIN Hierachy ch
        ON a.PARENTNODE_ID = ch.stocknode_id
    )

    SELECT 
        stocknode_id

    FROM Hierachy

    WHERE level > 0
) 

我遇到了:

Incorrect syntax near the keyword 'WITH'.

1 个回答
  • 公用表表达式必须位于顶层.

    您需要从该WHERE子句中取出CTE,并且只需WHERE像这样重新引用stocknode_id :

    WHERE swn.stocknode_id in (SELECT stocknode_id FROM Hierachy WHERE level > 0)
    

    2023-02-13 19:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有