在INSERT INTO语句MySQL中引用当前行

问题描述

| 我正在尝试执行INSERT INTO语句,如下所示:
insert into table1 (id,data1,data2) select c.id,c.data1,(select a.id 
from table3 a,table2 b where b.id=c.id and a.data3=b.data3) from table2 c;
基本上,这里发生的是我将一些数据从一个表迁移到另一个表。但是,在新表中,我想要第三张表中的一行的ID,而不是原始表中存储的String。 我觉得我的查询关闭,但是当我运行它时,MysqL给出错误
ERROR 1242 (21000): Subquery returns more than 1 row
我认为问题是
b.id=c.id
,但我不明白为什么
c.id
不是一个特定值。如果我用已知的ID替换
c.id
查询将按预期运行。 更一般而言,我需要能够从我的select语句的结果访问我所在的“当前行”,并在该内部select语句中使用其ID。 如何使我的内部select语句仅引用一行? 这是在CentOS上运行的MysqL 5.0.77。     

解决方法

        我们无法告诉您为什么您的子查询返回多行却没有看到更多表/数据。做一些调查,找出哪些记录是重复的,您应该能够解决您的问题。 如果您不关心重复项,而只是希望查询正常工作,请在子查询上使用ѭ5