我的表格长这样:
CREATE TABLE gyerek (
gyereke INT,
szulonek INT
);
我正在尝试在我的WITH
子句中使用多个UNION ALL
语句:
WITH testver (x, y) AS (
SELECT gy1.gyereke, gy2.gyereke
FROM gyerek gy1, gyerek gy2
WHERE gy1.szulonek = gy2.szulonek
AND gy1.gyereke <> gy2.gyereke
), rokon (x, y) AS (
SELECT * FROM testver
UNION ALL
(SELECT r1.x, gy1.gyereke
FROM rokon r1, gyerek gy1
WHERE r1.y = gy1.szulonek)
UNION ALL(SELECT gy1.gyereke, r1.y
FROM rokon r1, gyerek gy1
WHERE r1.x = gy1.szulonek)
)
SELECT * FROM rokon;
我遇到了以下错误:
ORA-32041:递归 WITH 子句中的 UNION ALL 操作必须只有两个分支。
我的问题是:是否有一种方式可以使用多个 UNION ALL 语句?如果没有,我该如何实现最后两个 SELECT 语句的合并。
UNION ALL
吗?使用SELECT r1.x, gy1.gyereke FROM rokon r1 join gyerek gy1 ON gy1.szulonek IN (r1.x, r1.y)
不就可以了吗? - Thorsten KettnerWITH
子句。你知道这一点,对吗?递归的WITH
子句由 <锚定部分> UNION ALL <递归部分> 组成。第二个UNION ALL
不应该出现在那里。 - Thorsten KettnerWITH
子句。但是我在Datalog
中有三个条件,因此我有三个SELECT
语句。 - Fogarasi Norbert