Подтвердить что ты не робот

Вставлять данные из одной таблицы в другую в mysql

Я хочу прочитать все данные из одной таблицы и вставить некоторые данные в другую таблицу. мой запрос

  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

пожалуйста, помогите мне.

4b9b3361

Ответ 1

Вы можете использовать INSERT... SELECT синтаксис. Обратите внимание, что вы можете процитировать '1' непосредственно в части 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 

Ответ 2

Если вы хотите вставить все данные из одной таблицы в другую таблицу, это очень просто sql

INSERT INTO destinationTable  (SELECT * FROM sourceDbName.SourceTableName);

Ответ 3

Он не будет работать так.

При попытке вставить строку с помощью запроса все значения должны быть в запросе.

С вышеуказанной проблемой вы хотите вставить magazine_subscription_id, subscription_name, magazine_id, status в выбранном запросе у вас есть magazine_subscription_id, subscription_name, magazine_id, status 1 это невозможно.

Если вы хотите вставить либо вам нужно вставить, используя запрос прямых значений

Ответ 4

Фактически запрос mysql для копирования данных из одной таблицы в другую - это Insert into table2_name (column_names) select column_name from table1
где значения, скопированные из таблицы 1 в таблицу2

Ответ 5

Если есть первичный ключ, такой как "id", вы должны его исключить, например, в моей таблице php есть столбцы: id, col2, col3, col4. id - это первичный ключ, поэтому, если я запустил этот код:

INSERT INTO php  (SELECT * FROM php);

Вероятно, я получаю эту ошибку:

#1062 - Duplicate entry '1' for key 'PRIMARY'

Итак, вот решение, я исключил ключ "id":

INSERT INTO php ( col2,col3,col4)  (SELECT col2,col3,col4 FROM php2);

Итак, моя новая таблица php имеет все строки таблицы php2.

Ответ 6

Попробуйте это. Вы делаете неправильно.

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

Ответ 7

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

Ответ 8

INSERT INTO destination_table ( 
      Field_1, 
      Field_2, 
      Field_3) 
SELECT Field_1, 
      Field_2, 
      Field_3 
      FROM source_table;

НО это BAD MYSQL

Сделайте это вместо:

  • drop the destination table: DROP DESTINATION_TABLE;
  • CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);

Ответ 9

INSERT INTO mt_magazine_subscription SELECT *
       FROM tbl_magazine_subscription 
       ORDER BY magazine_subscription_id ASC