当前位置: 首页 > 知识库问答 >
问题:

如何从另一个表更新记录

澹台硕
2023-03-14

我在另一个表(如ac)中有大约88k条记录。我想将表ac的一列更新到主表(如tbl)中。Eg-Table tbl示例记录,如

col1 col2 col3 col4

abc  dhj  123  ab12
def  bhv  456  ds34
ghi  hwj  789  hj46
jkl  yuh  012  ke28

表ac中的样本记录如下

col1 col3`

cba   123
fed   456
ihg   789
lkj   012

如何从ac表更新tbl值。使记录看起来像

col1 col2 col3 col4

cba  dhj  123  ab12
fed  bhv  456  ds34
ihg  hwj  789  hj46
lkj  yuh  012  ke28

共有1个答案

严书
2023-03-14

您可以执行相关更新:

update tbl
set col1 = (select col1 from ac where ac.col3 = tbl.col3)
where exists (select col1 from ac where ac.col3 = tbl.col3);

3 rows updated.

select * from tbl;

COL1 COL2 COL3 COL4
---- ---- ---- ----
cba  dhj  123  ab12
fed  bhv  456  ds34
ihg  hwj  789  hj46
jkl  yuh  012  ke28

或合并:

merge into tbl
using ac
on (ac.col3 = tbl.col3)
when matched then update set tbl.col1 = ac.col1;

3 rows merged.

select * from tbl;

COL1 COL2 COL3 COL4
---- ---- ---- ----
cba  dhj  123  ab12
fed  bhv  456  ds34
ihg  hwj  789  hj46
jkl  yuh  012  ke28

在这两种情况下,第四行不会受到影响,因为正如@Littlefoot所指出的,ac中没有匹配的记录。合并没有找到匹配项;对于更新版本,如果没有要更新的匹配行,则where exists子句可防止将值设置为null。如果ac中的第四行是012,而不是210,则在两个版本中都会更新。

 类似资料:
  • 我已经创建了一个多边形表(多边形),其中包含名称和点(使用多边形值) 我有另一个表(latlon ),它有lat和lot列,包含超过一百万条记录 我必须在“多边形”表中的点的帮助下更新纬度表中的列(区域名称) 以下 select 语句为一条记录提供正确的输出。 有人能帮我在POSTGIS中编写一个UPDATE查询来获取更多的lat,lon值吗?

  • 问题内容: 有2个表/实体,非常简单的场景。 表 诗人 -列:id,诗人,国家 表格 国家 -栏:编号,国家,计数 基本上, 国家 对 诗人 的映射自然是一对多的。例如,有来自60个国家的1000名诗人。在每个诗人 的诗人 被包含在国家之一的id民族领域分配给一个民族 国家 。 国家 的计数字段包含来自该国家的诗人中的 诗人 人数。 我的问题是如何仅使用一个SQL查询来按国家对 诗人 的人数进行计

  • 问题内容: 我有一条语句需要写(用通用名称表示,因为这是为了工作)来更新表“ tUpd”中的列“ updCol”。tUpd还具有一个列“ linkCol”,该列存在于另一个表tOther中。tOther还有另一列“ idCol”。 我的问题是更新tUpd中行的updCol值,该值通过linkCol对应于具有给定idCol值的行。 我认为应该起作用的一种解决方案是: 但是,我担心这种方法会导致性能下

  • 问题内容: 我试图用Final中的值更新表Original。我是SQL的新手,但是我已经花了两个小时尝试更改各种样本以满足我的需求。我正在使用Access 2007。 问题答案: 我不确定您的陈述仅返回一行。如果要使用分配语句对表执行更新,则 必须 确保它仅返回一行。 除此之外,您可以考虑下一个解决方案: 请注意,只有当两者都是表和表中的唯一键并且它们之间具有适当的关联时,这才可以正常工作。

  • 问题内容: 我正在尝试根据另一个MySQL信息更新一个MySQL表。 我的桌子看起来像: 而表如下所示: 我想更新在与来自基于(存储在字符串字段)。 希望更新后的表如下所示: 我有一个有效的查询,但是非常慢: 这使我的CPU耗尽,最终导致超时,并且仅执行了一部分更新(有数千个要匹配的值)。我知道匹配的速度会很慢,但这是我必须将它们匹配在一起的唯一数据。 有没有更好的方法来更新这样的值?如果可以更快

  • 这是我的php文件...我想在第二个表成功插入后更新第一个表,我要选择并正确插入,但我想更新的行在数据插入后没有更新。 有人能告诉我如何写这在PHP mysqli程序的方式。