当前位置:  开发笔记 > 后端 > 正文

如何将此连接值分配回其表?

如何解决《如何将此连接值分配回其表?》经验,为你挑选了1个好方法。

我有MySQL的初学麻烦.我正在尝试根据零件的部门和类别构建一个包含十位数字母数字部件号的DB.例如,"Bar"类的部门"Foo"的一部分可能是FOBAR10000.部门和类存储在它们自己的表中,因此我将部分表中的ID存储为部件而不是字符串"FO"和"BAR".

我想出了一个MySQL查询来查找和连接完整的部件名称.

SELECT pl.idPartsList as 'resultid', concat(pd.DeptShortName, pc.ClassShortName,pl.PartIntID) as 'Fullname'
FROM partdepartments pd, partclasses pc, partslist pl
WHERE pl.PartDeptId = pd.idPartDepartments and pl.PartClassID = pc.idPartClasses;

哪个产生:

resultid | Fullname
---------------------
1        | FOBAR10000

我想将此结果分配回PartFullAlphaID列下的部分,如下所示,以避免经常运行此查询.

之前:

idPartslist | PartDeptID | PartClassID | PartIntID | PartFullAlphaID
---------------------------------------------------------------------
1           | 1          | 1           | 10000     |          

后:

idPartslist | PartDeptID | PartClassID | PartIntID | PartFullAlphaID
---------------------------------------------------------------------
1           | 1          | 1           | 10000     | FOBAR10000         

但以下不起作用:

UPDATE test_db_1.partslist 
SET PartFullAlphaID = Fullname 
WHERE test_db_1.partslist.idPartsList = resultid;

因为:错误代码:1054.'where子句'中的未知列'resultid'

如何将此字符串值分配回零件?



1> bw_üezi..:

这是已连接表的更新.
试试这个查询:

UPDATE partslist pl
    JOIN partdepartments pd ON pl.PartDeptId = pd.idPartDepartments
    JOIN partclasses pc ON pl.PartClassID = pc.idPartClasses
SET pl.PartFullAlphaID = concat(pd.DeptShortName, pc.ClassShortName, pl.PartIntID)

另请参阅stackoverflow.com/../how-to-use-join-in-update-query

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有