我有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'
如何将此字符串值分配回零件?
这是已连接表的更新.
试试这个查询:
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