Sql 在两个结果集之间挑出重复项
我有一个问题,我正试图这样做。我试图选择出现在结果集中的值 我目前正在处理两个问题: A B除最后一行外,与上述相同,其中 AND fnppp.id = 1715 现在,第一个查询返回1536条记录,第二个查询返回2067条记录。然而,在这两个查询中都会出现记录人。我想做的是把他们挑出来。基本上,我想做一个交叉路口,所以我会研究一下 到目前为止,我已尝试做以下工作: -我在查询中添加了以下内容: AND pi.person_id NOT IN (SELECT /*+ RULE */ pi.person_id FROM ... ) 其中括号内的查询是查询B,而不是第一行的查询。这将返回大约10行,我不确定这是否准确 -然后我运行了相同的查询,除了notin。这给了我一个大约200的结果,我不确定这是否准确 现在这两个数字加起来显然不等于1536,我想应该是这样吧?很明显,他们中的一个或两个都错了Sql 在两个结果集之间挑出重复项,sql,oracle,Sql,Oracle,我有一个问题,我正试图这样做。我试图选择出现在结果集中的值 我目前正在处理两个问题: A B除最后一行外,与上述相同,其中 AND fnppp.id = 1715 现在,第一个查询返回1536条记录,第二个查询返回2067条记录。然而,在这两个查询中都会出现记录人。我想做的是把他们挑出来。基本上,我想做一个交叉路口,所以我会研究一下 到目前为止,我已尝试做以下工作: -我在查询中添加了以下内容: AND pi.person_id NOT IN (SELECT /*+ RULE */ pi.
谁知道我做错了什么?感谢您的帮助。如果您确实要查找两个结果集之间匹配的记录,请查看有关该命令的信息 不过,看看你的问题,我不确定这是你想要的。如果一条记录的fnpp.id=1169,那么同一条记录的fnpp.id=1715又如何呢
您可能正在寻找更类似的内容吗?看起来您已经获得了引用所有medcrtr.FREST\u节点引用的层次数据,但您没有使用Oracle层次语法CONNECT BY…您能澄清一下将它们单独列出是什么意思吗?您想只查看与fnppp.id值和use INTERSECT值匹配的行,还是只查看唯一的行并使用UNIONDOWN作为响应。INTERSECT是我应该一直使用的。虽然我正在尝试通过语法实现CONNECT,但我不确定如何开始,您有关于从哪里开始的提示吗?另外,与我的查询的编写方式相比,它有什么好处,除了干净之外?@Denominor:与问题的其余部分无关,但有一个规则提示?你使用的是哪个版本的甲骨文?@马克·班尼斯特:你能解释一下吗?实际上,我从其他人那里继承了这个查询,我不确定该提示如何应用于该查询。它似乎运行一样快,没有它,所以我想删除它,如果可能的话。我现在在9i上。谢谢,我不知道我怎么忘记了INTERSECT,这正是我需要的。 AND pi.person_id NOT IN (SELECT /*+ RULE */ pi.person_id FROM ... )