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 值