ホームページ  >  記事  >  データベース  >  MySQL テーブル間でデータを転送するときに発生する「列数の不一致」エラーを修正する方法

MySQL テーブル間でデータを転送するときに発生する「列数の不一致」エラーを修正する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 09:26:29982ブラウズ

How to Fix

MySQL で、あるテーブルから別のテーブルにデータを転送する方法

あるテーブルから別のテーブルにデータを転送するタスクに直面した場合、 INSERT ステートメントが便利です。特定のケースでは、クエリでエラーが発生しました:

INSERT INTO mt_magazine_subscription ( 
      magazine_subscription_id, 
      subscription_name, 
      magazine_id, 
      status ) 
  VALUES ( 
      (SELECT magazine_subscription_id, 
              subscription_name, 
              magazine_id 
       FROM tbl_magazine_subscription 
       ORDER BY magazine_subscription_id ASC), '1')

エラー メッセージは、INSERT ステートメントの列の数が指定された値の数と一致しないことを示しています。ここでの問題は、サブクエリの結果を単一の値として挿入しようとしているということですが、これは不可能です。

解決策: INSERT...SELECT 構文

これに対処するには、あるテーブルから別のテーブルにデータを直接挿入できる INSERT...SELECT 構文を使用する必要があります。修正されたクエリは次のとおりです:

INSERT INTO mt_magazine_subscription ( 
      magazine_subscription_id, 
      subscription_name, 
      magazine_id, 
      status ) 
SELECT magazine_subscription_id, 
       subscription_name, 
       magazine_id, 
       '1'
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC

この修正されたクエリでは:

  • サブクエリは、tbl_magazine_subscription から適切なデータを選択するために使用されます。
  • The '1'ステータス列の値は、SELECT 句内で直接引用符で囲まれています。
  • INSERT ステートメントの列と SELECT 句が一致するようになり、列数の不一致の問題が解決されました。

これにより、修正すると、クエリは指定されたステータス値で tbl_magazine_subscription から mt_magazine_subscription にデータを正常に挿入するはずです。

以上がMySQL テーブル間でデータを転送するときに発生する「列数の不一致」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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