在 Postgresql 中使用标识符重新排序列

2024-05-06

以下代码可以工作并创建一个带有序列号的临时表,该表会为每个新名称重新启动:

with results as (select row_number() over (partition by name order BY name) as mytid,name from telephn_table)
select * from results order by name

然而,我的目标是将新的序列号永久插入电话表中。 如何将新的序列号从结果表传输到电话表?我遇到过以下针对 MySql 的内容,但无法将其转换为 Postgresql。

MySQL:基于另一个字段添加序列列 https://stackoverflow.com/questions/1600294/mysql-add-sequence-column-based-on-another-field

有人可以帮忙吗?


如果没记错的话row_number()返回其自己分区内的数字。换句话说,row_number() over (partition by name order BY name)将为除重复项之外的每一行返回 1。你可能想要rank() over (order by name)反而。


经过长时间的讨论:

update telephn_table
set sid = rows.new_sid
from (select pkey,
             row_number() over (partition BY name) as new_sid,
             name
      from telephn_table
      ) as rows
where rows.pkey = telephn_table.pkey;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Postgresql 中使用标识符重新排序列 的相关文章

随机推荐