这是我第一次使用 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。对不起我的英语。
尝试以下代码
UPDATE table t
SET t.id = t1.NEW_ID
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [Date]) AS New_ID
FROM TABLE
) t1
请尝试一下,
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);
首先编辑表格(右键>>设计)
将 [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);