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

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

Susan Sarandon
リリース: 2024-12-11 10:21:15
オリジナル
437 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート