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  
4

2 に答える 2

1

問題は、 andとを実行できないことです。いずれかを選択してください。INSERT INTO ... SELECT INSERT INTO ... VALUES

あなたの場合、milk_producer1行しかない場合を除いて、行ごとにデータを挿入すると非論理的な相関関係がありますWHERE active='1'。同様に、複数の行を読み込もうとしている場合、なぜLIMIT1つの結果に対して内部クエリを実行するのですか?

INSERT INTO billing_temp (`billing_period_id`,`soc_id`,`bill_y_n`)
    SELECT `id`, ??, 'N' FROM `billing_period` 
    ORDER BY `billing_start_date` DESC
于 2011-02-04T10:39:18.507 に答える
0

SELECTステートメントをループする必要があります。カーソルを見てください。

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

于 2011-02-04T10:37:36.743 に答える