MySQL数据库错误: Subquery returns more than 1 row

标签 mysql

请参阅下面的查询,我一直在尝试从另一个似乎有重复项的表更新一个表。

运行此语句的正确方法是什么?

UPDATE doc SET idx2 = (SELECT imp.idx2 FROM imp WHERE imp.idx1 = doc.idx1),
idx3 = (SELECT imp.idx3 FROM imp WHERE imp.idx1 = doc.idx1)
WHERE doc.boxid IN (SELECT box.id FROM box WHERE box.profid = 41 
AND box.boxname = '1153-BATCH0011') AND doc.idx2 = ''

最佳答案

如果您确定子查询返回重复的相同值,则可以使用 LIMIT 1,这样您的子查询将仅返回 1 个结果。

UPDATE doc SET idx2 = (SELECT imp.idx2 FROM imp WHERE imp.idx1 = doc.idx1 LIMIT 1),
idx3 = (SELECT imp.idx3 FROM imp WHERE imp.idx1 = doc.idx1 LIMIT 1)
WHERE doc.boxid IN (SELECT box.id FROM box WHERE box.profid = 41 
AND box.boxname = '1153-BATCH0011') AND doc.idx2 = ''

关于MySQL数据库错误: Subquery returns more than 1 row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776562/

相关文章:

mysql - 将连接表中的所有匹配项连接到列中

javascript - 将 JSON 文件传递​​到 php 服务器,然后将其中的数据保存到 Mysql DB

php - Mysql查询多个数组值

mysql - 从数据库1中选择*并插入到数据库2中

mysql - 如何在mysql中获取记录 ORDER BY user_id DESC ANDcreated_date ASE

mysql - 触发减少计数器

mysql - 错误的字符串值 : '\xC1\xA4\xBB\xF3'

MYSQL:计算订单总额的函数

mysql - 将 mysql 时间戳字段转换为格式化日期 dd/mm/yyyy

mysql - 在一个 SQL 中返回父级 3 层深度