我有一个在数据库表中存储相等记录的结构。你可以认为这些记录是兄弟。例如我在这张表中有两条记录;1=2 和 1=3。我需要一个查询来返回给定记录的所有兄弟姐妹。让我举个例子;
这是我的表,有两列:
create table SIBLINGSTEST(col1 number, col2 number);
我有 2 条记录,1=2 和 1=3
insert into SIBLINGSTEST values(1,2);
insert into SIBLINGSTEST values(1,3);
我认为使用 connect by 是这种情况的最佳解决方案,并编写以下查询:
SELECT * FROM SIBLINGSTEST
START WITH (col1 = 1 or col2 = 1)
CONNECT BY NOCYCLE (
(PRIOR col1 = col1) or
(PRIOR col1 = col2) OR
(PRIOR col2 = col1) or
(PRIOR col2 = col2))
此查询返回正确的结果,返回两行。
如果我使用 2 作为参数,查询也会正确运行,再次返回两行。
但是如果我使用 3 作为参数,查询不会像我预期的那样运行,只返回起始行。
SELECT * FROM SIBLINGSTEST
START WITH (col1 = 3 or col2 = 3)
CONNECT BY NOCYCLE (
(PRIOR col1 = col1) or
(PRIOR col1 = col2) OR
(PRIOR col2 = col1) or
(PRIOR col2 = col2))
我想知道为什么 2 和 3 的结果不同。任何帮助或想法都会被应用。
谢谢。