2017-04-11 39 views
1

我有一个在列出对应于信贷员数字的表名prequals_created命名loanofficer列。我想更新此列有信贷员名称,而不是数量,它位于一个名为appusers表,其中fullnameloanofficer ID匹配。我试图这样做,首先使用SELECT通过使用名为loan_pairing的“中间”表来生成信贷员名称和id作为一对表。然而,我的语法有些问题。这里是我的代码:UPDATE SQL柱选择值

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成对信贷员的姓名。

这里关于我的语法到底是什么?

+0

是位于您的全名列在用户? –

+0

是的,它是(额外字符) – Jodo1992

+1

我觉得loan_pairing表亘古不抱什么特别做这个工作,即APPUSER的id是prequals_created表作为loanofficer,你想用全名是在appsuser表 –

回答

1

在多表更新语句MySQL联接的SET前走。我想,这应该为你工作:

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; 
+0

谢谢你做的,这个工作奇妙,我只需要在修改后还包括WHERE语句 – Jodo1992

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

删除不必要的连接表loan_pairing,并让您的查询有效和高效 这是你想要的

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