Oracle查询自联接?

时间:2012-05-03 15:44:32

标签: oracle

我已经简化了这个例子,但希望这个例子提供了足够的实质内容。

如果我有一张如下表......

ITEM GROUP
---- ----- 
 A     1
 B     1
 C     1
 D     2
 E     2
 F     3
 G     4

...我提供了项目A,B,D和F,我想构建一个查询,该查询将返回这些详细信息以及相关组C和E中的其他项目。

似乎我应该可以做某种内部联接,但我不清楚它是如何完成的。如果由于环境的限制在单个查询中完成,那将是最好的。

非常感谢!

1 个答案:

答案 0 :(得分:5)

如果我理解正确,这可行。

SELECT item,
       group_num
  FROM table_name
 WHERE grroup_num IN (SELECT group_num
                        FROM table_name
                       WHERE item IN ('A', 'B', 'D', 'F'))

您也可以将其写为EXISTS

SELECT item,
       group_num
  FROM table_name a
 WHERE EXISTS( SELECT 1
                 FROM table_name b
                WHERE a.group_num = b.group_num
                  AND b.item IN ('A','B','D','F') )