问题描述
|
我正在尝试执行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