gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:49:39 24 4
gpt4 key购买 nike

我的表格是这样的:

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 语句的统一。

最佳答案

在递归中,您希望在 y 匹配上使用 x 并在 x 上使用 y > 匹配。使用 CASE WHEN 检查哪一个匹配。

, 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)
)

关于sql - 在 WITH 子句中使用多个 UNION ALL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47743205/

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