您好,我需要执行以下查询
询问
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