Mysql 使用SELECT值更新SQL列

Mysql 使用SELECT值更新SQL列,mysql,sql,database,relational-database,Mysql,Sql,Database,Relational Database,我在创建的表namesprequals\u中有一个名为loanofficer的列,该列列出了与该贷款官员对应的数字。我想更新此列,使其具有贷款官员姓名而不是编号,该编号位于名为appusers的表中,fullname与loanofficerid匹配。我试图通过首先使用SELECT生成一个贷款官员姓名和id表,并使用“中间”将其成对生成名为贷款配对的表。然而,我的语法有问题。这是我的密码: UPDATE prequals_created AS pc SET pc.loanoff

我在创建的表names
prequals\u
中有一个名为
loanofficer
的列,该列列出了与该贷款官员对应的数字。我想更新此列,使其具有贷款官员姓名而不是编号,该编号位于名为
appusers
的表中,
fullname
loanofficer
id匹配。我试图通过首先使用SELECT生成一个贷款官员姓名和id表,并使用“中间”将其成对生成名为
贷款配对的表
。然而,我的语法有问题。这是我的密码:

UPDATE 
    prequals_created AS pc
SET 
    pc.loanofficer = lonames.fullname
FROM
    (SELECT DISTINCT a.fullname, lp.loanofficer
     FROM appusers AS a
     JOIN loan_pairing AS lp
        ON a.id = lp.loanofficer
     JOIN prequals_created AS pc
        ON lp.loanofficer = pc.loanofficer) AS lonames
WHERE 
    pc.loanofficer = lonames.loanofficer
FROM语句中嵌套的SELECT语句是正确的,并返回贷款官员的姓名及其各自的id


我的语法到底有什么问题?

MySQL
中的多表更新语句中,连接在
集合之前。我认为这应该适合你:

UPDATE  prequals_created AS pc
        JOIN loan_pairing AS lp
             ON lp.loanofficer = pc.loanofficer
        JOIN appusers AS a
            ON a.id = lp.loanofficer
SET     pc.loanofficer = a.fullname;

删除表的不必要连接贷款配对,使查询高效 这就是你想要的

    UPDATE 
         pc
    FROM appusers AS a
         JOIN prequals_created AS pc
            ON a.id = pc.loanofficer
SET 
        pc.loanofficer = a.fullname

您的全名列是否位于appusers中?是的,它是(额外的字符)我认为loan_配对表没有任何特殊功能来完成此工作,即appusers的id位于prequals_创建的表中作为loanofficer,您想用appsuser表中的全名替换loanofficer,这是一个非常糟糕的主意。您将丢失记录之间的链接。我建议改为为为名称添加一列并保留外键。重点是我不需要创建的
prequals\u
表中的特定链接,因为配对链接位于
appusers
中,所以在这种情况下这样做很好谢谢,这非常有效,我只需要在修改后包含WHERE语句
    UPDATE 
         pc
    FROM appusers AS a
         JOIN prequals_created AS pc
            ON a.id = pc.loanofficer
SET 
        pc.loanofficer = a.fullname