更新MySQL查询错误"子查询返回超过1行"

时间:2016-05-24 08:47:45

标签: mysql subquery

我试图实现此查询,但收到错误:

UPDATE ps_product_lang
SET name=(select name from ps_product_lang_backup where id_lang=2)
WHERE id_lang = 3

但是我得到了Subquery returns more than 1 row

可能我必须使用JOIN,但我对MySQL很新,不能自己做。

我想做的事情很简单:我在我的数据库中有3种语言,希望将数据从一种语言(英语id_lang 2)复制到另一种语言(俄语,id_lang 3)

3 个答案:

答案 0 :(得分:3)

我认为该表还有一个product_id列,对于产品而言是唯一的。

您需要告诉数据库为同一产品选择英文名称​​

UPDATE ps_product_lang
SET name=(select name from ps_product_lang_backup 
           where id_lang=2 
             and ps_product_lang.product_id = ps_product_lang_backup.product_id)
WHERE id_lang = 3

答案 1 :(得分:2)

我会尽力回答这个问题 在查看您的查询之后,很明显(select name from ps_product_lang_backup where id_lang=2)有多个结果,这就是为什么它会导致您的错误。现在,为了解决这个问题,你可以做两件事。

  1. 您可以使用相同的id_lang(简单的一个)删除一条记录。

  2. 或者,您可以像这样更改子查询:

    从ps_product_lang_backup中选择名称,其中id_lang = 2 LIMIT 1

  3. 会改变您的查询:

    UPDATE ps_product_lang SET name=(select name from ps_product_lang_backup where id_lang=2 LIMIT 1) WHERE id_lang = 3
    

    希望这个帮助

答案 2 :(得分:0)

这意味着您的SELECT Query返回两个以上的结果试试这个

SET name=(select name from ps_product_lang_backup where id_lang=2 LIMIT 1)