1

我有 2 个表:quest_mail_loot_template(表 1)和 quest_template(表 2)。他们都有“条目”列,这是他们的主 ID 键。他们不相互依赖。

Table2 有列 RewMailTemplateId 可以为空,但我只需要RewMailTemplateId<>0. 我需要找到两个表中的条目相同的行,并且当它发生时,从 Table2 的列 RewMailTemplateId 中更改 Table1 中的每个条目。

我试过用这个:

update quest_mail_loot_template Table1 set entry=(
   select RewMailTemplateId 
   from quest_template where RewMailTemplateId<>0) 
   where (
       select Table2.RewMailTemplateId 
       from quest_template TBL2 
       where TBL2.entry = TBL1.entry
   );

似乎 sql 正在尝试使用所有找到的数字更新 1 个字段,但我需要为他自己的 RewMailTemplateId 更新每个条目,它们是不同的数字。

我至少应该使用哪些运营商的建议?

4

2 回答 2

0

您的子查询正在选择所有非零模板,而不仅仅是与 quest_mail_loot_template 条目关联的模板。你需要对它进行限定。没有你所有的列名,而是这样的。

(
    select RewMailTemplateId 
    from quest_template 
    where RewMailTemplateId<>0
      And quest_template.??? = Table1.??? 
) 
于 2013-10-14T16:29:44.440 回答
0
UPDATE table1 a
JOIN table2 b
   ON a.entry = b.entry
AND b.RewMailTemplateId<>0 AND  b.RewMailTemplateId!=a.entry
SET a.entry = b.RewMailTemplateId 

或者

UPDATE table1 a
JOIN table2 b
   ON a.entry = b.entry
SET a.entry = b.RewMailTemplateId WHERE  b.RewMailTemplateId<>0 AND  b.RewMailTemplateId!=a.entry
于 2013-10-14T16:31:54.360 回答