选择第一个重复的元素

时间:2019-10-15 15:50:14

标签: java sql oracle hql

我在JAVA中有2个课程( MODEL1 && MODEL2 ) 如您所见:

MODEL1_ID   ACTN_DTE   MODEL2_ID    
---------- --------- --------------
         1 14/11/19  18         
      1000 14/11/19  4
      1001 14/11/19  19
      1002 14/11/19  4
      1003 14/11/19  4
      1004 14/11/19  18
      2000 14/11/19  5

我正在尝试使用SQL或HQL来从MODEL1中获取所有具有MODEL2_ID列表的元素,每个MODEL2_ID 仅获取第一个(最小MODEL1_ID)MODEL1(以防止重复) )

示例: 输入:(18,4,19,5)中的MODEL2_ID

MODEL1_ID   ACTN_DTE   MODEL2_ID    
---------- --------- --------------
         1 14/11/19  18         
      1000 14/11/19  4
      1001 14/11/19  19
      2000 14/11/19  5

2 个答案:

答案 0 :(得分:1)

select MIN(MODEL1_ID) FROM table GROUP BY (MODEL2_ID)

答案 1 :(得分:1)

“第一个”可能是指最小值actn_date,而问题中只是一个无用的数据样本(因为所有值都相同)。

如果是这样,则可以将聚合与keep一起使用,以通过actn_date 获取第一个值

select model2_id, min(actn_date) as actn_date,
       min(model1_id) keep (dense_rank first order by actn_date) as model1_id
from t
group by model2_id;