有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value相关的知识,希望对你有一定的参考价值。

上面sql文字,sql2000报错为:子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。该怎么写?

参考技术A 报错原因是,某个B表中的key值,在A表中存在多个;
举个例子:B表中某条记录的key值为20,而A表中key值为20的记录存在两个以上就会报这个错误;
解决方案:
如果不考虑sql所在业务环境,只从技术上绕过这个报错,可以在多条记录中选取最大的一条或者最小的一条;
update B b set b.value=(select max(a.value) from A a where b.key=a.key)
where exists(select 1 from A c where b.key=c.key)

结合业务考虑,一般系统中设计了字段名为key,是不允许重复的,请楼主检查一下是否存在错误数据或垃圾数据,如果业务要求不允许重复,则添加一个唯一约束,然后正常简单的update就可以执行成功了。本回答被提问者采纳

Python - 两个列表(list)组成字典(dict)

使用zip函数, 把key和value的list组合在一起, 再转成字典(dict).


代码:

# -*- coding: utf-8 -*-


keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print dictionary

"""
输出:
'a': 1, 'c': 3, 'b': 2
"""

以上是关于有两个表A 和B ,均有key 和value 两个字段,如果B 的key 在A 中也有,就把B 的value 换为A 中对应的value的主要内容,如果未能解决你的问题,请参考以下文章

写SQL语句实现:两个表A和B,有共同的id

十二道MR习题 - 3 - 交集并集差集

交换数组中两个元素的位置,元素包括key和value 一维数组

Python - 两个列表(list)组成字典(dict)

SAS表联合无键

Python 如果两个字典key值相同,如何提取对应values组成新的字典