ホームページ >データベース >mysql チュートリアル >MySQL INSERT ... SELECT エラー: 「オペランドには 1 つの列が含まれている必要がある」のはなぜですか?

MySQL INSERT ... SELECT エラー: 「オペランドには 1 つの列が含まれている必要がある」のはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 10:21:15486ブラウズ

MySQL INSERT ... SELECT Error: Why

MySQL: 「オペランドには 1 列を含める必要があります」構文エラーについて

クエリとエラー

以下に示すように、SELECT 句を使用して INSERT ステートメントを実行しようとすると、エラー:

INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT (a.number, b.ID, b.DENOMINATION) 
FROM temp_cheques a, BOOK b
WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;

表示されるエラー メッセージは次のとおりです:

Error: Operand should contain 1 column(s)
SQLState:  21000
ErrorCode: 1241

構文の修正

このエラーは、SELECT の構文の問題を示しています。句。これを解決するには、SELECT 句から括弧を削除し、次のように記述します。

INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT a.number, b.ID, b.DENOMINATION 
FROM temp_cheques a, BOOK b
WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;

説明

SELECT 句を使用した INSERT ステートメントの正しい構文SELECT 句は、で囲まれた複数の列ではなく、単一の列を返す必要があります。

その他の考慮事項

構文を修正した後も引き続き問題が発生する場合は、次の点を考慮してください。

  • WHERE 句にクロス結合条件がないため、行が過剰になる可能性があります
  • BOOK テーブルと temp_cheques テーブルの両方のデータ サイズを確認してください。大規模なデータセットでは、より大きなクエリを可能にするために SQL_BIG_SELECTS システム変数を増やす必要がある場合があります。

以上がMySQL INSERT ... SELECT エラー: 「オペランドには 1 つの列が含まれている必要がある」のはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。