2016-07-19 59 views
0

我想查找輸入到數據庫表中的IRN#的重複項。以下是IRN的獨特屬性(邏輯唯一)。在唯一屬性中查找數據庫中的重複記錄

ProjectNo, DrawingNo, DrawingRev, SpoolNo, WeldNo 

的IRN可以有多個WeldNos意味着上述獨特的屬性可以重複用於一個IRN#(與5個屬性值當然之一必須是唯一的)。

現在我試圖找出是否有任何重複的IRNs進入系統或沒有?我如何通過sql查詢找到?

P.S:由於數據庫的設計不好,沒有在表上沒有主鍵..

這是我迄今爲止嘗試過,但這並不給出正確的結果。

select * from WeldInfo a, WeldInfo b 
where a.ProjectNo = b.ProjectNo and 
a.DrawingNo = b.DrawingNo and 
a.DrawingRev = b.DrawingRev and 
a.SpoolNo = b.SpoolNo and 
a.WeldNo = b.WeldNo and 
a.IrnNo <> b.IrnNo; 
+0

您沒有定義重複。 – sagi

回答

2

但我不知道,我理解你的問題。

select * from (
select count(*) over (partition by ProjectNo, DrawingNo, DrawingRev, SpoolNo, WeldN) rr,t.* from WeldInfo t) 
where rr > 1; 

說明。

with tab as (
select 1 as id, 'a' as a , 'b' as b , 'c' as c from dual 
union all 
select 2 , 'a', 'b', 'c' from dual 
union all 
select 3 , 'x', 'b', 'c' from dual 
union all 
select 3 , 'x', 'b', 'c' from dual 
union all 
select 3 , 'x', 'd', 'c' from dual 
) 

select t.* 
     , count(*) over (partition by a,b,c) cnt1 
     , count(distinct id) over (partition by a,b,c) cnt2 
from tab t; 
+0

我試過這個,但它說它有語法錯誤。'丟掉左括號' – WAQ

+0

它現在應該可以工作 –

+0

它肯定會返回一些數據,但我懷疑結果是正確的。你能解釋一下上面的查詢是什麼嗎? – WAQ