Java 选择第一个重复的元素
我有两个JAVA类(MODEL1&&MODEL2) 正如你在这里看到的:Java 选择第一个重复的元素,java,sql,oracle,hql,Java,Sql,Oracle,Hql,我有两个JAVA类(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/
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\u ID列表的所有元素,仅获取每个MODEL2\u ID的第一个(最小MODEL1\u ID)MODEL1(如果是双重的话)
例如:
输入:模型2_ID in(18,4,19,5)
select MIN(MODEL1\u ID)FROM table GROUP BY(MODEL2\u ID)
select MIN(MODEL1\u ID)FROM table GROUP BY(MODEL2\u ID)
可能是“first”指的是最小的actn\u日期
,而问题只是有一个无用的数据样本(因为所有值都是相同的)
如果是这样,您可以使用聚合和keep
在actn\u date
之前获取第一个值:
“第一个”可能是指最小的actn_date
,问题只是有一个无用的数据样本(因为所有的值都是相同的)
如果是这样,您可以使用聚合和keep
在actn\u date
之前获取第一个值:
您是在要求一个SQL查询吗?因为你说的是JAVA,但你展示的是SQL,这很让人困惑……是的,我要求使用SQL查询,我用JAVA来解释更多,以防有人想使用HQL查询。你有没有尝试过SQL聚合函数?SQL查询作用于表而不是JAVA类。您发布的示例数据是什么?这是一张桌子吗?你说的第一个结果是什么意思?顺序重要吗?您只是要求SQL查询吗?因为你说的是JAVA,但你展示的是SQL,这很让人困惑……是的,我要求使用SQL查询,我用JAVA来解释更多,以防有人想使用HQL查询。你有没有尝试过SQL聚合函数?SQL查询作用于表而不是JAVA类。您发布的示例数据是什么?这是一张桌子吗?你说的第一个结果是什么意思?顺序重要吗?这会产生最后一个元素而不是第一个元素,并且它假设ID与创建时间/始终是这样排序的。那么,他可以使用MIN来代替。他只需要一个带有MODEL2\u ID的单数MODEL1\u ID。他需要粗体文本中的第一个结果。他应该向我们解释他对“第一个”的意思,这会产生最后一个而不是第一个元素,它假设ID与创建时间相对应/总是这样排序。好吧,他可以用MIN代替。他只需要一个带有MODEL2\u ID的单数MODEL1\u 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
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;