社区
Java EE
帖子详情
关于Java 对数据库查询去重复的问题。
svgr314
2012-09-04 04:51:09
我使用Query query = em.createQuery(HQL);的方法来查询一张表(实体)。
HQL语句中想要对该实体中某个属性相同的记录进行去重(不是整条记录完全相同,是一个字段相同),只保留ID最大的那一条!
请问HQL语句该如何写?
貌似用distinct可以去重,但是不能指定过滤掉的是哪几条而保留哪一条!
...全文
347
10
打赏
收藏
关于Java 对数据库查询去重复的问题。
我使用Query query = em.createQuery(HQL);的方法来查询一张表(实体)。 HQL语句中想要对该实体中某个属性相同的记录进行去重(不是整条记录完全相同,是一个字段相同),只保留ID最大的那一条! 请问HQL语句该如何写? 貌似用distinct可以去重,但是不能指定过滤掉的是哪几条而保留哪一条!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
java
定时从数据库抓取数据库,
java
查询数据库
java
如何实现定时从
数据库查询
新增的数据?...
第一类,开个线程,定式扫描,好比每一分钟查询一次数据库,将前后数据做比对(比对方式能够正在
java
端先把第一次的数据存到一个调集外,然后每次查询调集之后,将两次的内容正在
java
端做比力)第二类,正在数据库端,好比oracle数据库,对那个要监控的表A建个触发器,那个表外若是无数据改变,包罗楼次要的新删,点窜,删除,都能够被触发,然后把改变的内容存到另一个表B外,然后
java
就间接从那个B表外查询...
Java
连接数据库并实现添加数据有
重复
不插入数据
1、适用场景 当你不希望存入数据库中的某组数据
重复
。我这里的例子是一个注册系统,不希望账户名
重复
。 2、设置数据库中某字段不
重复
alter table user.users add unique(account); alter table + 数据库名.表名 + add unique (字段名); 3、
java
连接数据库 连接数据库需要先导入mysql-connector-
java
-5.1.36-bin.jar包 下载地址 下载好之后在idea中创建个Directory 解压下载好的包,复制下图中框
Java
实现数据库新增修改防止编码
重复
功能
案例 项目中添加菜单实现防止菜单编码
重复
功能 实现 数据库表创建索引 可添加多个字段
Java
层逻辑代码 @ApiOperation(value = "添加菜单") @RequestMapping(value = "/insertMenu", method = RequestMethod.POST) public Result insertMenu(@RequestBody Menu menu) { Result result = new Result(); t..
Java
给数据库插入数据不能有
重复
数据的
问题
最近遇到一个
问题
,插入的时候需要根据插入的数据判断有没有
重复
的,本来自己想的办法是每次插入的时候查询一下比较出不一样的再插入。具体如下。
java
大量数据
重复
校验_
Java
实现新增或修改时查询数据库是否
重复
,检查唯一
Java
实现新增或修改时查询数据库是否
重复
,检查唯一1 //Mapper层2 int selectCountByCode(String code)34 //mabatis层5 6 resultType="
java
.lang.Integer">7 select count(*)8 from category9 where code = #{code,jd...
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章