0

您好我需要执行以下查询

询问

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、名称、语言)

TaxonomyMapping(id, oldId, sourceId, name, language) Taxonomy 的精确副本

CategoryMapping(en_ID, language_ID)

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

4

1 回答 1

0

我在 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

于 2013-10-04T07:09:03.783 回答