社区
Java EE
帖子详情
关于Java 对数据库查询去重复的问题。
svgr314
2012-09-04 04:51:09
我使用Query query = em.createQuery(HQL);的方法来查询一张表(实体)。
HQL语句中想要对该实体中某个属性相同的记录进行去重(不是整条记录完全相同,是一个字段相同),只保留ID最大的那一条!
请问HQL语句该如何写?
貌似用distinct可以去重,但是不能指定过滤掉的是哪几条而保留哪一条!
...全文
380
10
打赏
收藏
关于Java 对数据库查询去重复的问题。
我使用Query query = em.createQuery(HQL);的方法来查询一张表(实体)。 HQL语句中想要对该实体中某个属性相同的记录进行去重(不是整条记录完全相同,是一个字段相同),只保留ID最大的那一条! 请问HQL语句该如何写? 貌似用distinct可以去重,但是不能指定过滤掉的是哪几条而保留哪一条!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zxhcloth
2012-09-05
打赏
举报
回复
忘了加注释了,上面的same是你说的相同的字段。
还有看了楼主的结贴率是0%,希望楼主问题解决了别忘了结贴,营造好的学习氛围。
zxhcloth
2012-09-05
打赏
举报
回复
HQL最终都会转换成sql,所以我给你写个sql吧,楼上们写的sql,思路上可以解决你的问题,但不是最好的方案,你这个问题其实是一个很经典的临界问题,一通百通,我给你“一”:
查询相同记录比最大ID小的
select * from table a
where exists (
select 0 from table b where a.same = b.same and a.id < b.id
)
查询相同记录最大ID的
select * from table a
where not exists (
select 0 from table b where a.same = b.same and a.id < b.id
)
删除相同记录比最大ID小的
delete from table a
where exists (
select 0 from table b where a.same = b.same and a.id < b.id
)
老韩同学
2012-09-05
打赏
举报
回复
写sql select * from 表名 a where a.id= (select max(id) from emp b where a.id=b.id)
辛格瑞拉
2012-09-05
打赏
举报
回复
delete from tab_1 a where rowid <(select max(rowid) from tab_1 b where b.属性=a.属性)
改改可用 ,祝你好运
老韩同学
2012-09-05
打赏
举报
回复
写sql的时候进行处理比如 select * from 表名 where id = (select max(id) from 表名 group by id)
wenhaoxp1987
2012-09-05
打赏
举报
回复
HQL
:select max(u.id) from User u group by u.userName由于Hibernate 要进行复合嵌套查询的话要配置映射文件的,所以建议用原生态的sql
SQL
:
select * from user t1 where t1.id in (select max(id) from user t2 group by t2.user_name)
svgr314
2012-09-05
打赏
举报
回复
= =0 卧槽…… 这年头60分都木有人看了吗?
svgr314
2012-09-04
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
order by id desc 就可以了 ,其实用 group by 也可以分组的。
[/Quote]
group by是可以分组,但是不能保留我想要的那条记录啊~
额…… 我说的这个id就是一个属性,不是那个主键ID啦。也就是保留某个字段最大的那条记录。
夜空中苦逼的程序员
2012-09-04
打赏
举报
回复
order by id desc 就可以了 ,其实用 group by 也可以分组的。
svgr314
2012-09-04
打赏
举报
回复
本人新手啊~ 求各位大大指教!!! T _ T
spring-boot-2.3.0.RC1.jar中文-英文对照文档.zip
1、压缩文件中包含: 中文-英文对照文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套
Java
组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文-英文对照文档.zip,
java
,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
presto-jdbc-0.238.1.jar中文文档.zip
1、压缩文件中包含: 中文文档、jar包下载地址、Maven依赖、Gradle依赖、源代码下载地址。 2、使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 3、特殊说明: (1)本文档为人性化翻译,精心制作,请放心使用; (2)只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; (3)不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 4、温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套
Java
组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件。 5、本文件关键字: jar中文文档.zip,
java
,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册。
Linux_SID_开发指南.pdf
Linux_SID_开发指南
基于 python 3.7 + django 2.2.3 + 运维devops管理系统
基于 python 3.7 + django 2.2.3 + channels 2.2.0 + celery 4.3.0 + ansible 2.8.5 + AdminLTE-3.0.0 实现的运维devops管理系统。
拉格朗日插值法处理缺失数据
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 拉格朗日插值法是一种数学方法,能够在给定的若干个不同位置的观测值时,找到一个多项式,使得该多项式在这些观测点上恰好取到相应的观测值。这种多项式被称为拉格朗日(插值)多项式。从数学的角度来看,拉格朗日插值法可以构建一个多项式函数,使其精确地穿过二维平面上的若干个已知点。本文将介绍如何利用拉格朗日插值法来填补缺失值。为了更好地理解这一方法,我们先通过一组简单的数据来展示拉格朗日插值法的实现过程。以下是实现拉格朗日插值法的代码示例:
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章