Проблема во вложенном запросе Mysql вопрос

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

Проблема в том, что вы не можете выполнить 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

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

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

Другие вопросы по тегам