Sql 在WITH子句中使用多个UNION ALL语句

Sql 在WITH子句中使用多个UNION ALL语句,sql,oracle,recursive-query,Sql,Oracle,Recursive Query,我的桌子看起来像这样: CREATE TABLE gyerek ( gyereke INT, szulonek INT ); 我试图在WITH子句中使用多个UNION ALL语句: 我得到以下错误: ORA-32041:递归WITH子句中的UNION ALL操作只能有两个分支 我的问题是:有没有一种方法可以使用多个UNION ALL语句?如果没有,我如何实现最后两个SELECT语句的统一 在递归中,您希望在y匹配上使用x,在x匹配上使用y。检查哪一个匹配的用例 , rokon

我的桌子看起来像这样:

CREATE TABLE gyerek (
    gyereke INT,
    szulonek INT
);
我试图在WITH子句中使用多个UNION ALL语句:

我得到以下错误:

ORA-32041:递归WITH子句中的UNION ALL操作只能有两个分支


我的问题是:有没有一种方法可以使用多个UNION ALL语句?如果没有,我如何实现最后两个SELECT语句的统一

在递归中,您希望在y匹配上使用x,在x匹配上使用y。检查哪一个匹配的用例

, rokon (x, y) AS (
  SELECT x, y FROM testver
  UNION ALL
  SELECT CASE WHEN gy1.szulonek = r1.x THEN r1.y ELSE r1.x END, gy1.gyereke
  FROM rokon r1
  JOIN gyerek gy1 ON gy1.szulonek IN (r1.x, r1.y)
)

你希望从这个查询中得到什么?我相信它可以写得如此简单,顺便说一句,如果它起作用,它会返回重复的记录。这是你想要的吗?你真的需要团结吗?从rokon r1中选择r1.x,gy1.gyereke,在r1.x,r1.y中加入gy1.szulonek上的gyerek gy1就足够了吗?实际上我正在尝试将数据日志规则重写为SQL。我不知道这是否更简单,我最近开始学习该语言,我想知道为什么我不能使用多个UNION ALL。您正在创建一个递归WITH子句。你知道,是吗?递归WITH子句由UNION ALL组成。第二个UNION ALL不合适。我知道这是一个递归WITH子句。但我在数据日志中有三个条件,这就是为什么我有三个SELECT语句。
, rokon (x, y) AS (
  SELECT x, y FROM testver
  UNION ALL
  SELECT CASE WHEN gy1.szulonek = r1.x THEN r1.y ELSE r1.x END, gy1.gyereke
  FROM rokon r1
  JOIN gyerek gy1 ON gy1.szulonek IN (r1.x, r1.y)
)