更新SQL表中的值并删除冗余条目

问题描述 投票:0回答:2

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

我的代码:

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

sql sql-server
2个回答
0
投票

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

  1. 无关紧要,因此您可以在某些临时表中进行select distinct以获取唯一行(这样就不会造成冗余),然后删除该表并插入回唯一符。

  2. 您有一列,您可以在该列上决定保留行中的哪些行。例如,您有dateOfInsert列,因此您可以使用这样的查询:

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

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

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

update MyTable set EMP_PCT = 3.85 
where EMP_NUM = 103

© www.soinside.com 2019 - 2024. All rights reserved.