簡體   English   中英

SQL:提取某些條件下的記錄

[英]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_sumnif記錄。 但是,如果一個nif存在兩個或多個不同num_sum S,我想選擇nifnum_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_sumnum_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM