以下代码可以工作并创建一个带有序列号的临时表,该表会为每个新名称重新启动:
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(使用前将#替换为@)