A表与B表部分字段相同,如何通过b表更新a表的字段值

A表结构如下:
titile value
张三 null
李四 null

B表结构如下:
title value detail
张三 18 本科
李四 25 硕士
王五 29 博士
如何将B表中18,25 复制到A表中?

UPDATE A
SET value = (
    SELECT value
    FROM B
    WHERE A.title = B.title
)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    解决方案:

    根据题目描述,我们可以使用以下的SQL查询语句实现将B表中的value值复制到A表中与B表title匹配的行的value字段中:

    UPDATE A 
    SET A.value = B.value 
    FROM A 
    INNER JOIN B 
    ON A.title = B.title
    

    这条SQL语句使用了内连接 INNER JOIN 来匹配A表和B表中具有相同title值的行,使用 SET 关键字将B表中的value值赋值给A表的value字段。

    关于“复制”的含义,本题中可以默认为覆盖,因为问题描述中提到“将B表中的value值复制到A表中与B表title匹配的行的value字段中”,即将B表的value值覆盖掉A表的value值。如果需要追加,则需要在问题描述中明确添加相关提示,如“将B表中的value值追加到A表中与B表title匹配的行的value字段中”。

    另外,如果A表中有多行与B表中同一个title匹配,那么上述SQL语句会更新所有匹配的行。如果需要仅更新 A 表中匹配的第一行,则可以使用以下的SQL查询语句:

    UPDATE A 
    SET A.value = B.value 
    FROM A 
    INNER JOIN B 
    ON A.title = B.title 
    WHERE A.id = (SELECT MIN(id) FROM A 
                  WHERE A.title = B.title)
    

    其中,通过子查询找到A表中title匹配的第一行,然后更新其value字段。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^