我试图实现此查询,但收到错误:
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)
答案 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
)有多个结果,这就是为什么它会导致您的错误。现在,为了解决这个问题,你可以做两件事。
您可以使用相同的id_lang
(简单的一个)删除一条记录。
或者,您可以像这样更改子查询:
从ps_product_lang_backup中选择名称,其中id_lang = 2 LIMIT 1
会改变您的查询:
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)