none
如何使用cte的查询结果集? RRS feed

  • 问题

  •  我想将cte查询结果集赋值给table类型的变量,或者将某一列作为in查询的条件?这个怎么语法是怎样的?

    例如下列sql语句,试图把一个邻接表的cte查询结果集作为对另一个表的selec语句的id列的in查询条件。直接执行会抛出语法错误


    select * from table where id in( WITH cte AS( SELECT top 1 id,Pid FROM Ralation_Table WHERE id=1 UNION ALL SELECT a.id,a.Pid FROM Ralation_Table AS a INNER JOIN cte ON a.id=cte.Pid ) SELECT id FROM cte )



    • 已编辑 Trian555 2019年4月3日 1:28
    2019年4月3日 1:27

答案

  • WITH  cte AS(
        SELECT top 1 id,Pid
        FROM Ralation_Table WHERE id=1
        UNION ALL
        SELECT a.id,a.Pid
        FROM Ralation_Table AS a
         INNER JOIN cte  ON a.id=cte.Pid  
    )
    select * from table where id in(
    SELECT id  FROM cte  )
    • 已标记为答案 Trian555 2019年4月8日 6:46
    2019年4月4日 10:40