嵌套查询中的问题Mysql问题

时间:2011-02-04 10:26:28

标签: mysql sql mysql-error-1242

下面是我的查询,我得到一个“子查询返回超过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  

2 个答案:

答案 0 :(得分:1)

问题是你can't执行了INSERT INTO ... SELECT 以及INSERT 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

答案 1 :(得分:0)

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

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