zoukankan      html  css  js  c++  java
  • 获取唯一的或是删除重复的记录

    在某一数据表中,数据有冗余了,我们需要获取唯一的记录。

    同这样的问题,使用例子来说时,最简单了。
    创建一张数据表:

     CREATE TABLE dbo.Data
    ( 
        [ID] int IDENTITY(1,1) NOT NULL, 
        [Item] varchar(55) NULL,      
        [Designation] varchar(20) NULL,
        [Qty] decimal(10, 2) NULL
     ) 
     GO
    Source Code


    为这张表,添加一些数据,注意一些数据已经重复了:

     INSERT INTO [dbo].[Data]
     ([Item],[Designation],[Qty])  VALUES
      (N'A001',N'DES',1),
      (N'A001',N'DES',1),
      (N'A003',N'TSG',12), 
      (N'A015',N'MTT',6), 
      (N'A360',N'OSS',7), 
      (N'A360',N'OSS',7),
      (N'A360',N'OSS',7),  
      (N'A521',N'FPP',4), 
      (N'A015',N'MTT',6),
      (N'A741',N'BBS',9), 
      (N'A741',N'BBS',9), 
      (N'A003',N'TSG',12),
      (N'A015',N'MTT',6)
    
      GO
    Source Code



    如果数据是较高的一些版本,接下来使用ROW_NUMBER()来过滤数据:

    WITH TempData ([Item],[Designation],[Qty],[DuplicateCount])
    AS
    (
        SELECT [Item],[Designation],[Qty],ROW_NUMBER() OVER(PARTITION by [Item],[Designation],[Qty] ORDER BY [Item],[Designation],[Qty]) 
        AS [DuplicateCount]
        FROM [dbo].[Data]
    )
    SELECT * FROM TempData
    Source Code


    上面只是知道哪些数据是在重复的。现在我们需要对上面的SQL语句稍改一下,把重复的记录删除:


    WITH TempData ([Item],[Designation],[Qty],[DuplicateCount])
    AS
    (
        SELECT [Item],[Designation],[Qty],ROW_NUMBER() OVER(PARTITION by [Item],[Designation],[Qty] ORDER BY [Item],[Designation],[Qty]) 
        AS [DuplicateCount]
        FROM [dbo].[Data]
    )
    --SELECT * FROM TempData
    DELETE FROM TempData WHERE [DuplicateCount] > 1 
    GO
    
    SELECT [Item],[Designation],[Qty] FROM [dbo].[Data]
    GO
    Source Code
  • 相关阅读:
    PHP如何让apache支持.htaccess 解决Internal Server Error The server …错误
    PHP文件的上传下载
    Centos rsync文件同步配置
    Nginx负载均衡策略
    MongoDB 基本命令
    nginx keepalived 主从切换
    iptabels 的一些配置
    负载均衡 LVS+Keepalived
    FreeBSD 系统的配置.
    linux下利用curl监控web应用状态
  • 原文地址:https://www.cnblogs.com/insus/p/6767383.html
Copyright © 2011-2022 走看看