我有一个结构,我在数据库表中存储相同的记录。你可以认为这些记录是兄弟姐妹。例如,我在这张表中有两条记录; 1 = 2和1 = 3。我需要一个将返回给定记录的所有兄弟的查询。让我举个例子;Oracle兄弟结构
这是我的表有两列:
create table SIBLINGSTEST(col1 number, col2 number);
我有2个,1 = 2和1 = 3
insert into SIBLINGSTEST values(1,2);
insert into SIBLINGSTEST values(1,3);
我想用连接的是这种情况的最佳解决方案,并写入以下查询:
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的结果不同。任何帮助或想法都将被评价。
谢谢。
我不明白这一点。你叫什么兄弟姐妹?当列中的值出现多次? –
让我通过我的例子来解释它。 1和2是兄弟姐妹。 1和3也是兄弟姐妹。所以2和3也是兄弟姐妹(间接)。当插入到我的表中时,我有重复的值检查,这些情况不在我的担心之列。 –
还有一件事,问题出现在我们的testin数据库中,运行Oracle 10g 10.2版。我只是在11g数据库上测试了这种情况,没有任何问题。查询按我的预期运行。我认为这是一个用11g修复的bug。 –