【问题标题】:problem in nested query Mysql question嵌套查询Mysql问题中的问题
【发布时间】:2011-02-04 10:26:27
【问题描述】:

以下是我的查询,我收到“子查询返回超过 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  

【问题讨论】:

  • 用那种语法是不可能的。您必须遍历来自 SELECT id FROM billing_period order by billing_start_date DESC LIMIT 0,1 的所有结果

标签: mysql sql mysql-error-1242


【解决方案1】:

问题是你can't 执行INSERT INTO ... SELECT 和 和INSERT INTO ... VALUES。选一个。

在您的情况下,按行插入数据时存在不合逻辑的相关性 - 除非 milk_producer 只有 1 行 WHERE active='1'。同样,如果您尝试加载多行,为什么要将内部查询LIMITing 到 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2015-08-05
      • 2011-11-09
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多