76

あるテーブルからすべてのデータを読み取り、一部のデータを別のテーブルに挿入したいと考えています。私のクエリは

  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')

しかし、私はエラーが発生しました

  #1136 - Column count doesn't match value count at row 1

私を助けてください。

4

12 に答える 12

143

INSERT...SELECT構文を使用できます。SELECT部分​​で直接「1」を引用できることに注意してください。

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 
于 2013-02-16T07:09:28.240 に答える
5

このようには機能しません。

クエリを使用して行を挿入しようとすると、すべての値がクエリに含まれている必要があります。

magazine_subscription_id, subscription_name, magazine_id, status 上記の問題で、選択クエリ に挿入したい magazine_subscription_id, subscription_name, magazine_id, status1があり、それは不可能です。

どちらかを挿入する場合は、直接値のクエリを使用して挿入する必要があります

于 2013-02-16T07:07:04.537 に答える
4

実際、あるテーブルから別のテーブルにデータをコピーするためのmysqlクエリは

Insert into table2_name (column_names) select column_name from table1

ここで、table1 から table2 にコピーされた値

于 2013-12-26T11:41:33.803 に答える
0

これを試して。あなたは間違ったやり方でやっています。

    INSERT INTO mt_magazine_subscription( 
    magazine_subscription_id, 
    subscription_name, 
    magazine_id, status) VALUES ( 
         (SELECT magazine_subscription_id, subscription_name, 
                 magazine_id,1 as status FROM tbl_magazine_subscription 
                 ORDER BY magazine_subscription_id ASC)
    )
于 2013-02-16T07:05:53.013 に答える
0
  INSERT INTO mt_magazine_subscription ( 
      magazine_subscription_id, 
      subscription_name, 
      magazine_id, 
      status ) 
  VALUES ( 
      (SELECT magazine_subscription_id, 
              subscription_name, 
              magazine_id,'1' as status
       FROM tbl_magazine_subscription 
       ORDER BY magazine_subscription_id ASC))
于 2013-02-16T07:10:57.180 に答える
0

これを使ってみてください

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 ;

select 句でハードコードされた値を使用する

于 2021-09-10T09:03:11.047 に答える
-1
INSERT INTO destination_table ( 
      Field_1, 
      Field_2, 
      Field_3) 
SELECT Field_1, 
      Field_2, 
      Field_3 
      FROM source_table;

しかし、これは悪いMYSQLです

代わりにこれを行います:

  1. drop the destination table: DROP DESTINATION_TABLE;
  2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
于 2013-09-23T18:47:55.343 に答える