1

下面是我的查询,我收到“子查询返回超过 1 行”错误:

INSERT INTO billing_temp (`billing_period_id`,`soc_id`,`bill_y_n`) 
  VALUES(
      (SELECT `id` FROM `billing_period` ORDER BY `billing_start_date` DESC LIMIT 0,1),
      (SELECT `id` FROM `milk_producer` WHERE active='1'),
      'N'
  )

SELECT `id` FROM `billing_period` ORDER BY `billing_start_date` DESC LIMIT 0,1

返回多个值。

我希望这些多个值将插入到表中,例如:

1 03 N
2 03 N
3 03 N  
4

2 回答 2

1

问题是你不能执行INSERT INTO ... SELECT andINSERT INTO ... VALUES。选一个。

在您的情况下,按行插入数据时存在不合逻辑的相关性——除非milk_producer只有 1 行WHERE active='1'。同样,如果您尝试加载多行,为什么要将LIMIT内部查询设置为 1 个结果?

INSERT INTO billing_temp (`billing_period_id`,`soc_id`,`bill_y_n`)
    SELECT `id`, ??, 'N' FROM `billing_period` 
    ORDER BY `billing_start_date` DESC
于 2011-02-04T10:39:18.507 回答
0

您需要遍历该SELECT语句。看看游标。

http://dev.mysql.com/doc/refman/5.0/en/cursors.html

于 2011-02-04T10:37:36.743 回答