PostgreSQL:为引用创建一系列唯一的数字
我举了一个例子: 我正在构建的是一对多,尽管对于这个例子来说,多对多将是更真实的生活 我需要完成的是: 我应该能够为author表中的authororder列生成描述整数序列的author order,从数字1开始,这样每个数字在参考书中都是唯一的。因此,对于每一位作者来说,在某一本书的参考文献中,数字从1到2,到3等等。 此外,还应生成authororder的数字,以反映author.fullname的顺序(如:“按fullname从作者顺序中选择*”) 我尝试使用sequence,但并没有像我希望的那样重置每本书的序列号,相反,序列号继续增加(我猜应该是这样)。我还尝试在row_number()的帮助下完成这项工作,但无法准备一个脚本来实现我想要的目标 生成authororder后的最终结果如下:PostgreSQL:为引用创建一系列唯一的数字,sql,postgresql,Sql,Postgresql,我举了一个例子: 我正在构建的是一对多,尽管对于这个例子来说,多对多将是更真实的生活 我需要完成的是: 我应该能够为author表中的authororder列生成描述整数序列的author order,从数字1开始,这样每个数字在参考书中都是唯一的。因此,对于每一位作者来说,在某一本书的参考文献中,数字从1到2,到3等等。 此外,还应生成authororder的数字,以反映author.fullname的顺序(如:“按fullname从作者顺序中选择*”) 我尝试使用sequence,但并没有
author_id fullname mobileno fk_book_id authororder
100 John Green 30303 1 (1)
101 Maureen Johnson 4343 1 (3)
102 Lauren Myracle 76665 1 (2)
103 Greg Mortenson 6434 2 (2)
104 David Oliver Relin 72322 2 (1)
105 Marco Polo 54321 3 (3)
106 Angus MacGyver 27234 3 (1)
107 Timo TA 83451 3 (4)
108 Anonymous 55554 3 (2)
你似乎想要:
row_number() over (partition by fk_book_id order by fullname) as authororder
您可以将其合并到更新中,如下所示:
update author a
set authororder = new_authororder
from (select a.*,
row_number() over (partition by fk_book_id order by fullname) as new_authororder
from author a
) aa
where a.authorid = aa.authorid;
太好了,谢谢!如何用代码片段的结果更新实际的authororder值?