请参阅下面的查询,我一直在尝试从另一个似乎有重复项的表更新一个表。
运行此语句的正确方法是什么?
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/