您好,我在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
的记录答案 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进行比较时没有歧义。