2012-10-05 35 views
0

您好我在Oracle中有一個查詢,我不知道我是否可以做我想要做的事情。Oracle通過一行的唯一性篩選多個行

我有一個查詢類似下面

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

from tableA 

join tableB 
on ###### 

join tableC 
on ##### 

join tableD 
on ##### 

我需要限制這個結果設置爲僅具有一個獨特的tableA.Value

我可以做一個多行選擇和加入的多條記錄表那麼一些怎麼樣的

組添加一些BY tableA.Value

HAVING計數(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

您的意思是說,您希望確保其他表中的行只連接到TableA中'值'唯一的行(即它是 - 或可能 - 唯一或主鍵)?或者限制最終結果集,使每個「TableA.value」實例只有一行? – APC

+0

嗨APC,當我加入其他表我加入tableA.Value,但我需要從tableB值。 TableA.Value可能是重複的,但我得到的TableB的值將是唯一的。我需要找回沒有重複TableA.Value的值。 – Magezy

+0

我還是不太明白。如果你發佈了一些相同的數據和你想要的結果,它會讓事情變得更容易。 – APC

回答

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.v時沒有歧義ALUE。