用子查询更新mysql查询

时间:2013-10-03 18:55:01

标签: mysql subquery

您好我需要执行以下查询

查询

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,有人可以帮我这个吗?目前它为所有人填写一个id,怀疑我使用的oldId(ta.oldId = oldId)不是要更新的表的oldId。可以像这样进行查询,还是应该搜索其他解决方案?

1 个答案:

答案 0 :(得分: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