0

我正在尝试执行如下 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,而不是存储在原始表中的字符串。

我觉得我的查询很接近,但是当我运行它时,mysql给出了错误:

ERROR 1242 (21000): Subquery returns more than 1 row

我认为问题是b.id=c.id,但我不明白为什么c.id不是一个特定的值。如果我c.id用已知的 id 替换,查询会按预期运行。

更一般地说,我需要能够从我的 select 语句的结果中访问我所在的“当前行”,并在该内部 select 语句中使用它的 id。

如何让我的内部选择语句只引用一行?

这是在 CentOS 上运行的 MySql 5.0.77。

4

1 回答 1

1

我们无法告诉您为什么您的子查询返回不止一行而没有看到更多的表/数据。做一些调查并找出哪些记录是重复的,您应该能够解决您的问题。

如果您不关心重复项并且只想让查询正常工作,LIMIT 0,1请在子查询上使用

于 2011-06-09T22:09:06.500 回答