sql - 更新 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
。
解决方案
首先,您需要确定哪些记录是冗余的,哪些应该保留,有两种方法:
你不在乎,所以你可以只做
select distinct
一些临时表来获取唯一的行(所以没有冗余),然后删除表并插入唯一的 vlues。您有一些列,您可以根据这些列来决定一组行中的哪些行将是要保留的行。例如你有
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
推荐阅读
- css - CSS右浮动不能改变大小和大小不匹配css
- python - 如何在 python 3 上生成正弦波音调
- excel - 适用于 Microsoft Office (AMO) 的 Excel 加载项 - 使用 VBA 删除存储过程对象和保留值
- java - 使用 Streams 展平 Java 对象
- linux - 在 Yocto 中使用串行控制台登录时启用 root 密码验证
- java - 基本的 MVC 结构问题
- javascript - 响应式导航栏 - 单击时移动的下拉符号
- html - 如何阻止音频元素重叠导航
- visual-studio-code - 防止 VS Code 在另存为时将光标移动到文件开头
- reporting-services - 使用 IIF() 函数的 SSRS 报表生成器表达式无法正确评估包含“<”和“>”字符的条件