2011-02-04 11 views
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 
+0

その構文では不可能です。 'SELECT id FROM billing_period order by billing_start_date DESC LIMIT 0,1'からすべての結果をループする必要があります – Fender

答えて

1

問題は、あなたがINSERT INTO ... SELECTINSERT INTO ... VALUESを行うcan'tです。 1つを選択します。 には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 
関連する問題