首页 > 解决方案 > 更新 SQL 表中的值并删除冗余条目

问题描述

我有这个数据库,其中包含来自各种插入表语句的许多冗余记录,而不是更新已经存在的数据。有没有办法在不丢失表中数据的情况下删除冗余记录?

我的代码:

SELECT EMP_NUM,
       EMP_LNAME,
       EMP_FNAME,
       EMP_INITIAL,
       EMP_HIREDATE,
       JOB_CODE,
       EMP_PCT,
       PROJ_NUM
FROM EMP_2

我的第二个问题是我需要编写 SQL 代码来将EMP_PCT值更改3.85为员工编号 ( EMP_NUM) 为的人103

标签: sqlsql-server

解决方案


首先,您需要确定哪些记录是冗余的,哪些应该保留,有两种方法:

  1. 你不在乎,所以你可以只做select distinct一些临时表来获取唯一的行(所以没有冗余),然后删除表并插入唯一的 vlues。

  2. 您有一些列,您可以根据这些列来决定一组行中的哪些行将是要保留的行。例如你有dateOfInsert列,所以你可以使用这样的查询:

    select *, row_number() over (order by dateOfInsert desc) rn from MyTable
    

然后,使用 将记录插入临时表rn = 1,删除该表,并仅插入最新记录。

关于第二个问题,这是基本的:

update MyTable set EMP_PCT = 3.85 
where EMP_NUM = 103

推荐阅读