hibernate hql 语句去除重复数据

hibernate hql 语句去除重复数据,第1张

参考如下:

/**

* 功能:根据品牌查询

*

* @param pageSize

* 每页大小

* @param currentLPagem

* 当前第几页

* @param productBlack

* 产品品牌

* @param productBlackItem

* 产品分类

* @param productSize

* 产品尺码

* @param keyWord

* 搜索关键字

* @return

*/

public pageBean seachProductByBrank(int pageSize, int currentLPage,

String product_Brank, String product_itemName) {

// final String hql = "from " + OgrilProducts.class.getName()

// + " where product_Brank='" + product_Brank

// + "' and product_itemName='" + product_itemName

// + "' order by product_registerDate desc"

final String hql = " from "

+ OgrilProducts.class.getName()

+ " as product where product.productItemName='"

+ product_itemName

+ "' and productBrank='"

+ product_Brank

+ "' and not exists( from "

+ OgrilProducts.class.getName()

+ " where productItemName='"

+ product_itemName

+ "' and productBrank='"

+ product_Brank

+ "' and productItemNumber=product.productItemNumber and productId<product.productId )"

int allRow = this.getAllRowCount(hql)// 总记录数

int totalPage = pageBean.countTotalpage(pageSize, allRow)// 总页数

final int offset = pageBean.countOffset(pageSize, currentLPage)// 当前页开始记录

final int length = pageSize

final int currentPage = pageBean.countCurrentPage(currentLPage)

List list = this.queryForPage(hql, offset, length)// 记录

// 把分页信息保存到Bean中

pageBean pagebean = new pageBean()

pagebean.setPageSize(pageSize)

pagebean.setCurrentPage(currentPage)

pagebean.setAllRow(allRow)

pagebean.setTotalPage(totalPage)

pagebean.setList(list)

return pagebean

}

1、在电脑上打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表。

2、输入“select * from user where name in (select name from user group by name having count(name) >1) ”sql语句,点击运行可以看到查询出了数据库中user表的重复数据。

3、通过“delete from user where   name in (select name from user group by name  having count(name) >1) ”sql语句删除姓名重复的数据。

4、也可以通过“select distinct name from user”sql语句来去掉重复数据,这里去掉了张三的重复数据。

5、通过“select distinct class from user”sql语句来去掉班级相同的重复数据。

示例

假设存在一个产品信息表Products,其表结构如下:

CREATE TABLE Products (  

ProductID int,  

ProductName nvarchar (40),  

Unit char(2),  

UnitPrice money  

)

表中数据如图:

图中可以看出,产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:

第一步——建立一张具有相同结构的临时表

CREATE TABLE Products_temp (  

ProductID int,  

ProductName nvarchar (40),  

Unit char(2),  

UnitPrice money  

)

第二步——为该表加上索引,并使其忽略重复的值

方法是在企业管理器中找到上面建立的临时表Products _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。如图2所示。

按照图2中圈出来的地方设置索引选项

第三步——拷贝产品信息到临时表

insert into Products_temp Select * from Products

此时SQL Server会返回如下提示:

服务器: 消息 3604,级别 16,状态 1,行 1

已忽略重复的键。

它表明在产品信息临时表Products_temp中不会有重复的行出现。

第四步——将新的数据导入原表

将原产品信息表Products清空,并将临时表Products_temp中数据导入,最后删除临时表Products_temp。

delete Products  insert into Products select * from Products_temp drop table Products_temp

这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6731142.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存