postgresql - 比较两个表中的列并在 PostgreSQL 中合并值
问题描述
我得到两个表共享一些列名,并且行有些相似。我需要一种方法来比较行条目并将值从一个表插入到另一个表中以匹配一列中的行。描述我的问题的示例如下所示:
big table |small table
------------------------- |---------------------------
customer |address| | customer |address |
------------------------ | |------------------------------
John |123 Road | |customer John |123 Road
Jason |234 Dr | |shopper Jack |645 Pkway
Jack |Null | |customer Jones |789 Road
Jones |Null |
小表可以看作是大表的数据源,它们包含相同的列名。我尝试过加入方法,但该方法不太适合。不同的命名约定会导致问题。在这种情况下,大表中的名称包含在customer
小表中的名称中。我想在上面的例子中实现的是,小表中的地址可以插入到大表中的地址中。我希望我的描述足够清楚。谢谢你。customer
shopper Jack
customer Jones
Jack
Jones
解决方案
使用更新...从大表客户的位置在小表客户中。
update big_table bt
set address = sm.address
from small_table sm
where bt.address is null
and position(bt.customer in sm.customer) > 0;
但要格外小心,这不是一个好习惯。将小表客户拆分为 2 列会更好。您还需要解决当两者都有客户地址但它们不同时会发生什么。以及多个同名客户。
推荐阅读
- javascript - 练习反应式编程
- php - 从正则表达式中得到错误“在偏移量 1 处没有重复的内容”
- ios - 异常没有被捕获
- batch-file - 在 echo 命令的末尾批量附加一些东西
- ruby-on-rails - Mongo 查询不在范围内的数据 - 不在范围内
- c# - 如何以编程方式创建对象标识符
- html - 为什么我的水平导航偏离中心?
- php - 致命错误:未捕获的类型错误:参数 1 传递给 PhpMyAdmin\UserPreferences::apply()
- java - 使用 selenium webdriver 检查来自 www 站点的黄瓜自动验证大型文本文件(日志)的方法
- r - 使用 ggplot2 仅填充堆叠图中的底部堆栈