用条件替换mysql中另一个表中的列

myss37ts  于 2022-12-26  发布在  Mysql
关注(0)|答案(1)|浏览(108)

我想替换我的数据库news表product中的标签行,其中product名称等于另一个表product中的product名称。
我想将tags列从products数据库复制到product数据库tags必须在正确的行中,就像name列必须与两个表都匹配一样。
我尝试了一个查询,但它给我一个错误:

Table to copy = product
Table from copy products
Condition (name=name) or (slug=slug)

在两个表中:

UPDATE product
   set tags = (
       select tags
       FROM products
       where product.name = products.name
   );

它给出一个错误:

Subquery returns more than 1 row

它适用于:

UPDATE product
   set tags = (
       select tags
       FROM products
       where product.id = products.id 
   );
f2uvfpb9

f2uvfpb91#

我发现什么可以更好地理解并确保你最终想要在最终更新,但也要确保你得到的记录打算。

select
      np.name,
      np.tags NowTags,
      op.tags OtherTags
   from
      NowProduct np
         JOIN OtherProduct op
            on np.Name = op.Name

一旦你确认了这一点,只需将SELECT更改为UPDATE。你可以使用正在更新的表的“别名”。我发现最好确保你的查询是正确的,看看什么记录将被查询,什么之前和你想要更新的值应该是。一旦好了,然后应用更新。

update np set
      tags = op.tags
   from
      NowProduct np
         JOIN OtherProduct op
            on np.Name = op.Name

相关问题