更新 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
) 有不止一个结果,这就是它导致您出错的原因。现在,要解决此问题,您可以做两件事。
或者你可以删除一条相同的记录id_lang
(简单的)。
或者,您可以像这样更改子查询:
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
希望对您有所帮助
我正在尝试实现此查询,但出现错误:
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
) 有不止一个结果,这就是它导致您出错的原因。现在,要解决此问题,您可以做两件事。
或者你可以删除一条相同的记录
id_lang
(简单的)。或者,您可以像这样更改子查询:
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
希望对您有所帮助