zoukankan      html  css  js  c++  java
  • MS SQL Server 保留一行,清除多余冗余数据

    今天发现数据库里面保存测试数据的表里面,按照MINI_BARCODE和MINI_ITEM这两列分组的话,虽然不是唯一的,但是应该不会有很多重复的,实际是有很多冗余数据,因此需要保留一行,删除其他多余的数据。

    思路是先找出唯一的,把ID插入一个中间表,如下。由于数据量较大,所以每次查询的时候要限定时间范围。

    insert into ID_Backup(T_MINI_TEST_DATAYSID)

    select min(A.T_MINI_TEST_DATAYSID) from
    (
    SELECT [MINI_BARCODE]
    ,[MINI_ITEM]
    ,[MINI_VALUE]
    ,[MINI_WriteID]
    ,[MINI_CREATE_TIME]
    ,[T_MINI_TEST_DATAYSID]
    FROM [dbo].[T_MINI_TEST_DATAYS] where [MINI_CREATE_TIME] < '2020-12-24 2:30:00 PM' AND [MINI_CREATE_TIME] > '2020-06-24 2:30:00 PM'
    ) A

    group by A.MINI_BARCODE, A.MINI_ITEM

    然后再把这段时间内的重复数据删掉

    delete A from
    (
    select * from [T_MINI_TEST_DATAYS] where [MINI_CREATE_TIME] < '2020-12-24 2:30:00 PM' AND [MINI_CREATE_TIME] > '2020-06-24 2:30:00 PM'
    )
    A left join ID_Backup B on A.T_MINI_TEST_DATAYSID = B.T_MINI_TEST_DATAYSID where B.T_MINI_TEST_DATAYSID is null

  • 相关阅读:
    php面向对象三大特性
    php面向对象的重写与重载
    一组成对的数字,找出不成对的数字
    如何创建dll以及使用
    常见运行时错误
    连续数的和
    绕圆圈取球
    第一章 概述
    错误2038
    一个简单的环境光shader
  • 原文地址:https://www.cnblogs.com/QiuTianBaBa/p/15762093.html
Copyright © 2011-2022 走看看