删除重复记录,并且剩下一条
当我们谈论重复记录时,实际上是在讨论数据库中的某一列或多列出现重复数据的情况。在实际应用中,可能会遇到一列重复、两列重复等不同情况,这些情况的重复记录处理方式也会有所不同。
如果您想删除或处理这些重复记录,可以通过以下步骤进行。以数据库表“dbo.品种描述$”为例,该表包含ID_PK、品种名称、性状标准编号和代码等字段。
我们可以创建一个与原表结构相同的新表,用于存放不重复的记录。这个过程可以通过一段SQL代码实现:
```sql
SELECT INTO tmpA FROM dbo.品种描述$ WHERE 1=2 -- 创建完毕新表tmpA
```
接下来,我们需要处理表中的重复记录。在这个例子中,我们关注的是品种名称和性状标准编号这两个字段,因为这两个字段的值在表中不能重复。我们可以使用以下脚本进行处理:
首先声明变量和计数器:
```sql
declare @VarietyName nvarchar(255), @StdCharCode nvarchar(255), @iCount int
set @iCount=0
```
接着,使用游标遍历原表中的所有记录,找出品种名称和性状标准编号的组合:
```sql
declare insert_distinct_cursor cursor for select 品种名称,性状标准编号 from dbo.品种描述$ group by 品种名称,性状标准编号
open insert_distinct_cursor
```
```sql
FETCH NEXT FROM insert_distinct_cursor INTO @VarietyName,@StdCharCode
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
insert into dbo.tmpA (品种名称,性状标准编号,代码)
select T1.品种名称, T1.性状标准编号, T1.代码
from dbo.品种描述$ as T1
where T1.品种名称=@VarietyName and T1.性状标准编号=@StdCharCode;
set @iCount=@iCount+1;
END
FETCH NEXT FROM insert_distinct_cursor INTO @VarietyName,@StdCharCode
END
CLOSE insert_distinct_cursor
DEALLOCATE insert_distinct_cursor
print @iCount
```你可以看到计数器@iCount的值就是处理过的重复记录数量。在这个过程中,原表中的重复记录被转移到了新表tmpA中,并且每个记录只会出现一次。这样,我们就成功地删除了重复记录。
编程语言
- 删除重复记录,并且剩下一条
- CodeIgniter框架提示Disallowed Key Characters的解决办法
- 不通过JavaScript实现的自动滚动视差效果
- mysql用户管理操作实例分析
- PHP获取客户端及服务器端IP的封装类
- 浅谈react-router HashRouter和BrowserRouter的使用
- WebView启动支付宝客户端支付失败的问题小结
- 基于openlayers4实现点的扩散效果
- asp 关键词字符串分割如何实现方法
- jQuery实现的文字hover颜色渐变效果实例
- jenkins部署.net平台自动化构建的方法步骤
- 微信公众号 摇一摇周边功能开发
- laravel 解决多库下的DB--transaction()事务失效问题
- OpenCV 3.1.0+VS2015开发环境配置教程
- 对laravel的session获取与存取方法详解
- JSP中的编译指令和动作指令的两点区别