sql - 更新具有相同ID但行中不同数据的数据

标签 sql sql-server database

我有一个 ID 相同但两行数据不同的记录 更新最终结果应该是数据中存在的该 ID 的最后一条记录。 例子

ID | Name | PermanentAddrss | CurrentLocation
1  |  R1  | INDIA           |    USA
1  |  R1  | INDIA           |    UK

现在 ID 1 将被加载到数据库中的记录

1|R1|INDIA|UK

如何在 SQL Server 中为多条记录完成此操作?

最佳答案

请理解,SQL Server 不会按照数据插入的顺序存储或获取数据,因此要查找最新/最后一条记录,您应该有某种方式对记录进行排序。 这通常是一个时间戳列,如 last_modified_date。您当前的表是缓慢变化的维度类型 2 的主要候选对象;你应该考虑实现它。 参见 explanation 在 Kimball 的小组网站上。

如果您真的不受任何订单的影响,只需要为每个 ID 一行,您可以尝试以下查询。

select 
ID, 
Name,
PermanentAddress,
CurrentLocation
from
(select
*,
row_number() over(partition by id order by (select null)) r
from yourtable)t
where r=1

关于sql - 更新具有相同ID但行中不同数据的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47807600/

相关文章:

php - 如何将动态值插入mysql数据库

PHP MySQL 选择最大行数返回错误的数字

sql - 从存储过程更新表

mysql - MySQL 中的反透视表

json - SQL Server OPENROWSET 不提取 JSON 数据

java - 如何在单个 Java 文件中维护多个 SQL 数据库连接?

java - 如何使用 Hibernate 在子列上设置以前的父 ID

Mysql查询优化以在没有DISTINCT的情况下转换连接中的子查询

C#/SQL 获取所有存储过程及其代码

c - 来自另一个表的 SQLITE UPDATE 字段 IF NULL