проблема во вложенном запросе Mysql вопрос - PullRequest
1 голос
/ 04 февраля 2011

ниже - мой запрос, и я получаю ошибку «Подзапрос возвращает более 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 ]

1 голос
/ 04 февраля 2011

Проблема в том, что вы не можете выполнить 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
0 голосов
/ 04 февраля 2011

Вам нужно перебрать оператор SELECT. Посмотрите на курсоры.

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

...