更新 MySQL 查询错误 "Subquery returns more than 1 row"

UPDATE MySQL query error "Subquery returns more than 1 row"

我正在尝试实现此查询,但出现错误:

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)

这里表示你的 SELECT Query Return 多于两个结果试试这个

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

我假设 table 也有一个产品唯一的 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

我会尽力回答这个问题 查看您的查询后,很明显 (select name from ps_product_lang_backup where id_lang=2) 有不止一个结果,这就是它导致您出错的原因。现在,要解决此问题,您可以做两件事。

  1. 或者你可以删除一条相同的记录id_lang(简单的)。

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

    select 来自 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

希望对您有所帮助