SQL 按日期排序,然后用 update 函数更改 id 的值

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

这是我第一次使用 SQL,我需要你的帮助。我有一张这样的桌子:

身份证 日期
1 2021年2月1日
2 2021年2月3日
3 2021年2月4日
4 2021年2月2日

我可以按日期订购,然后我得到了这个:

身份证 日期
1 2021年2月1日
4 2021年2月2日
2 2021年2月3日
3 2021年2月4日

我已经使用函数 UPDATE 和 ORDER BY 完成了此操作。现在有一个问题。如何按日期排序,并使用 update 函数更改 ID 的值以获得如下结果:

身份证 日期
1 2021年2月1日
2 2021年2月2日
3 2021年2月3日
4 2021年2月4日

有没有什么快速的方法可以按日期排序并保留ID的顺序?我想帮助我的朋友解决这个问题,但我从来没有使用过 SQL。对不起我的英语。

sql sorting
3个回答
0
投票

尝试以下代码

UPDATE table t
SET t.id = t1.NEW_ID
FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY [Date]) AS New_ID
      FROM TABLE
 ) t1

0
投票

请尝试一下,

with my_cte as (
select id, date
, row_number() over(order by date asc) rn 
from test
)
update test set id = 
(select  min(rn) from my_cte 
where test.id = my_cte.id and test.date=my_cte.date);

0
投票

首先编辑表格(右键>>设计)

  1. 删除主键。
  2. 禁用身份(将其设置为否)。
  3. 保存更改。
  • 将 [OLD_SYS_ID] 更改为您的列名称。

  • 将 [T_Requests_New] 更改为您的表名称。

  • 完成上述修改后,执行下面的代码。

  • 回滚步骤1,2并保存更改。

     with ORG_Table as (select OLD_SYS_ID,row_number() over(order by OLD_SYS_ID asc) New_ID from T_Requests_New) update T_Requests_New set ID = (select  New_ID from ORG_Table where T_Requests_New.OLD_SYS_ID = ORG_Table.OLD_SYS_ID);
    
© www.soinside.com 2019 - 2024. All rights reserved.