您好,我需要执行以下查询

询问

update Taxonomy
set sourceId = (
select id from TaxonomyMapping a where a.oldId =
    (
        select cm.en_ID
        from TaxonomyMapping ta
        join CategoryMapping cm on ta.oldId = cm.language_ID where ta.oldId = oldId limit 1
    )
) where id > -1;


表格如下:

分类法(id,oldId,sourceId,名称,语言)

分类标准映射(id,oldId,sourceId,名称,语言)分类标准的精确副本

类别映射(en_ID,language_ID)

我试图完成什么
原始分类表具有某种语言的类别,但有其翻译,但是需要在类别映射中知道它们,现在我需要将英语翻译添加到sourceId中,有人可以帮助我吗?目前,它为所有即时通讯填充了一个ID,怀疑我使用的oldId(ta.oldId = oldId)不是要更新的表的oldId。是否可以进行这样的查询,还是应该寻找其他解决方案?

最佳答案

我在dba.stackexchange.com中放置了相同的问题,给出的答案是正确的,这是我正在寻找的查询:

UPDATE Taxonomy t
 JOIN CategoryMapping cm ON cm.language_ID = t.oldID
 JOIN (SELECT * FROM Taxonomy) x ON x.oldID = cm.en_ID
 SET t.sourceId = x.id
WHERE t.id > -1;


来源:https://dba.stackexchange.com/questions/50981/mysql-update-query-with-subquery

10-08 16:15