[英]Sql: Extract records with some condition
我在Oracle數據庫表中有行(具有+ 2M條記錄),並且我希望在某些情況下提取記錄。 沒有在表上設置約束。 任何幫助將不勝感激。
nif num_sum
--------------------------
123 456
123 456
123 789 // => I want to select this
134 600
允許具有一個具有一個或多個相同num_sum
的nif
記錄。 但是,如果一個nif
存在兩個或多個不同num_sum
S,我想選擇nif
和num_sum
。 我顯示以上記錄僅供參考。
我試過了:
select distinct nif, num_sum
from sumcon
group by nif, num_sum
having count(distinct nif) > 1
您不返回任何記錄,因為nif
只有1個不同的值,因此計數不大於1。
根據您的描述,
“允許記錄具有一個或多個相同num_sum的nif(一個nif不應用於兩個不同的num_sum)”
我認為您需要以下條件:
SELECT nif
FROM sumcon
GROUP BY nif
HAVING COUNT(DISTINCT num_sum) > 1;
首先,在原始查詢中DISTINCT
是多余的。 接下來,由於您說對於給定的nif
值,不應該存在多個不同的num_sum
值,因此我認為您希望按nif
分組並使用COUNT(DISTINCT num_sum)
。 現在,如果您的意思是給定的num_sum
值num_sum
應該存在一個以上的nif
唯一值,那么您將需要以下內容:
SELECT num_sum
FROM sumcon
GROUP BY num_sum
HAVING COUNT(DISTINCT nif) > 1;
如果您需要獲取所有在這種情況下的nif
值,則必須執行以下操作:
SELECT nif, num_sum FROM sumcon
WHERE num_sum IN (
SELECT num_sum
FROM sumcon
GROUP BY num_sum
HAVING COUNT(DISTINCT nif) > 1
);
希望這可以幫助。
不確定是否正是您要的內容,但我希望它能對您有所幫助。
select nif, num_sum from sumcon group by nif, num_sum having count(1) > 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.