2016-05-17 71 views
2

如何找到具有相同的ident但不同的密鑰,即相同的 「alt_anim_ident」 和而不同 「animals_key」 動物標識表中的重複數據

Animals Table

+0

PL/SQL是Oracle的語言存儲過程。而PL/SQL Developer是一個Oracle專用工具。但pgAdmin是一個Postgres工具。你正在使用哪個數據庫? –

+0

我正在使用Postgres – TechPathi

回答

2
SELECT yt1.* , yt2.* /*SELECT both data, you can put * if you want too */ 
FROM yourtable yt1 
INNER JOIN yourtable yt2 /*Do self-checking*/ 
ON yt1.alt_anim_ident = yt2.alt_anim_ident /*Check those with the same alt_anim_ident*/ 
WHERE yt11.animals_key <> yt2.animals_key; /*Eliminates data which pointing to itself*/ 
+0

儘管此代碼可能會回答問題,但提供 有關_why_和/或_how_的其他上下文,它將回答 該問題將顯着提高其長期值 的值。請[編輯]你的答案,添加一些解釋。 –

+0

我試過這段代碼,它回答了我的問題,但導致數據顯示兩次 – TechPathi

+0

@TechPathi,列或行的兩倍? –

2
SELECT * 
FROM thetable t         -- How to find animals 
WHERE EXISTS (         -- where (different animals) exist 
     SELECT * FROM thetable x 
     WHERE x.alt_anim_ident = t.alt_anim_ident -- that have same ident 
     AND x.animals_key <> t.animals_key  -- but different key 
     ) 
ORDER BY t.alt_anim_ident, t.animals_key 
     ; 
+0

儘管此代碼可能回答此問題,但提供 有關_why_和/或_how_的其他上下文,它將回答 該問題將顯着提高其長期值 的值。請[編輯]你的答案,添加一些解釋。 –

+0

考慮完成。現在請對Vic Lee的答案做一個類似的評論,該答案列出了每個具有相同「ident」的m組中的所有m *(m-1)對。 – joop

+0

像寶石一樣工作... – TechPathi