Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择第一个重复的元素_Java_Sql_Oracle_Hql - Fatal编程技术网

Java 选择第一个重复的元素

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/

我有两个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/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;