[英]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.