Oracle根据一行的唯一性选择多行过滤

时间:2012-10-05 15:58:49

标签: oracle plsql group-by having

您好,我在Oracle中有一个查询,我不确定我是否可以做我想做的事。

我有一个类似下面的查询

select tableA.Value, tableB.Value, tableC.Value, tableD.Value

from tableA

join tableB
on ######

join tableC
on #####

join tableD 
on #####

我需要将此结果集限制为仅具有唯一tableA.Value

的记录

我可以在多个表上进行多行选择和连接,然后添加一些类似

的内容

GROUP BY tableA.Value

HAVING Count(tableA.Value)= 1)

到最后将选定的行限制为在其中一行中具有唯一值的行

#########################编辑

有些数据可能更好解释

1234 ABC TEST

2345 BCD TEST

2345 GGG TEST

3456 CDE TEST

4567 DEF TEST

4567 FFF TEST

5678 EFG TEST

期望的结果集;

1234 ABC TEST

3456 CDE TEST

5678 EFG TEST

我想将记录限制为具有唯一列1

的记录

1 个答案:

答案 0 :(得分:4)

select tableA.Value, tableB.Value, tableC.Value, tableD.Value
  from tableA 
join tableB on ######
join tableC on #####
join tableD on #####
where 1 = (select count(*) from tableA tableA2 where tableA2.value = tableA.value)

我多年没在Oracle工作了,所以我不确定语法是否正确,但是想法是将tableA从子查询重命名为tableA2,以便在将tableA.value与tableA2.value进行比较时没有歧义。