Вставлять данные из одной таблицы в другую в 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
пожалуйста, помогите мне.
Ответы
Ответ 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