我在Oracle数据库表中有行(有+ 2M记录),我想提取一些条件的记录。约束未在表上设置。任何帮助将不胜感激。
nif num_sum
--------------------------
123 456
123 456
123 789 // => I want to select this
134 600
允许具有nif
且具有一个或多个相同num_sum
的记录。但是,如果两个或更多不同的nif
存在num_sum
,我想选择nif
和num_sum
。我只展示了上述记录。
我试过了:
select distinct nif, num_sum
from sumcon
group by nif, num_sum
having count(distinct nif) > 1
答案 0 :(得分:1)
您不会返回任何记录,因为nif
只有1个不同的值,因此计数不会大于1.
答案 1 :(得分:1)
根据您的描述,
"允许带有一个或多个相同num_sum的nif的记录(nif不应该是两个不同的num_sums)"
我想你想要以下内容:
SELECT nif
FROM sumcon
GROUP BY nif
HAVING COUNT(DISTINCT num_sum) > 1;
首先,在原始查询中DISTINCT
是多余的。接下来,既然您说num_sum
的给定值不应存在多个nif
的不同值,我认为您希望按nif
进行分组并使用COUNT(DISTINCT 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
);
希望这有帮助。
答案 2 :(得分:0)
不确定这正是您所要求的,但我希望它会对您有所帮助。
select nif, num_sum from sumcon group by nif, num_sum having count(1) > 1