PSQL - 查找所有值并根据另一列中的非唯一值使其唯一

Posted

技术标签:

【中文标题】PSQL - 查找所有值并根据另一列中的非唯一值使其唯一【英文标题】:PSQL - Find all values and make unique based on non unique values in another column 【发布时间】:2021-10-29 21:31:15 【问题描述】:

我有一个包含多个列的视图,需要更新 CHILD 列中的值,以便对于列 PARENT 中的每个不同值,列 CHILD 中都有唯一值。如果没有,请在 Child 中的“-”之前的值中添加几个字符来更新。

示例:初始表

ID PARENT CHILD
1 ABC - 123 BBB - 364
2 ABC - 123 BBB - 364
3 GHI - 789 BBB - 364
4 JKL - 343 NNN - 679
5 MNO - 524 NNN - 679
6 PQR - 785 YYY - 678
7 STU - 765 MMM - 687

最终结果:

ID PARENT CHILD
1 ABC - 123 BBBA - 364
2 ABC - 123 BBBA - 364
3 GHI - 789 BBB - 364
4 JKL - 343 NNNQ - 679
5 MNO - 524 NNN - 679
6 PQR - 785 YYY - 678
7 STU - 765 MMM - 687

【问题讨论】:

【参考方案1】:

您应该在 postgresql (PlPgsql) 中编写一个函数,该函数利用cursor 来处理 PARENT 表中的每个不同的行值,并在循环中迭代以更新 CHILD 列中的值。您可能需要添加字母和数字以使值唯一。阅读此article,了解如何使用游标逐行迭代并对表中的元组进行一些更新。

【讨论】:

感谢我查看链接文章的提示。你知道这会如何帮助我开始吗? 所以最佳做法是先尝试并在无法解决或遇到任何错误时寻求帮助。请参阅此 SO recommendation,了解如何创建可重现的代码。

以上是关于PSQL - 查找所有值并根据另一列中的非唯一值使其唯一的主要内容,如果未能解决你的问题,请参考以下文章

如果在 Pandas 的任一列中找到,则删除两个 float64 值

从不同表的另一列中的一列中查找所有值

如何根据Python中另一列中的日期查找最频繁的值

如何在单个查询 (PSQL) 中更新一列中的不同值?

MySQL - 如何根据另一列中的唯一值转置一列中的单元格?

根据另一列中的行自动填充第二列中的数据