Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新MySQL查询错误“子查询返回超过1行”_Mysql_Subquery - Fatal编程技术网

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

更新MySQL查询错误“子查询返回超过1行”,mysql,subquery,Mysql,Subquery,我正在尝试实现此查询,但出现了一个错误: UPDATE ps_product_lang SET name=(select name from ps_product_lang_backup where id_lang=2) WHERE id_lang = 3 但是我得到了子查询返回的不止一行 也许我必须使用JOIN,但我对MySQL还很陌生,自己也做不到 我想做的很简单:我的数据库中有3种语言,希望将数据从一种语言(英语id_lang 2)复制到另一种俄语id_lang 3)中粘贴。这意味着您的

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

UPDATE ps_product_lang
SET name=(select name from ps_product_lang_backup where id_lang=2)
WHERE id_lang = 3
但是我得到了子查询返回的不止一行

也许我必须使用JOIN,但我对MySQL还很陌生,自己也做不到

我想做的很简单:我的数据库中有3种语言,希望将数据从一种语言(英语id_lang 2)复制到另一种俄语id_lang 3)中粘贴。这意味着您的SELECT查询返回两个以上的结果

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

我假设该表还有一个product_id列,该列对于产品是唯一的

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


我会尽力回答这个问题 查看您的查询后,很明显,从id_lang=2的ps_product_lang_备份中选择名称会有不止一个结果,这就是导致错误的原因。现在,要解决这个问题,你可以做两件事

您可以删除一条id相同的记录

或者,您可以按如下方式更改子查询:

UPDATE ps_product_lang SET name=(select name from ps_product_lang_backup where id_lang=2 LIMIT 1) WHERE id_lang = 3
从ps_product_lang_备份中选择名称,其中id_lang=2限制1

这将更改您的查询,如下所示:

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

希望此帮助

您需要提供有关ps_product_lang的更多信息。是的,您假设正确,这里的每个人都给了我正确的解决方案:感谢每个人,这不是解决方案。用户希望通过另一个表更新多行我试图解决错误,而不是向他提供整个解决方案