将数据从一个表插入到另一个表中
我想读取一个表中的所有数据,并将一些数据插入到另一个表中。 我的查询是
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
请帮帮我。
您可以使用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
如果你想插入所有数据从一个表到另一个表有一个非常简单的SQL
INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName);
它不会像这样工作。
当您尝试使用查询插入行时,所有值都应该在查询中。
有了上面的问题,你想插入magazine_subscription_id, subscription_name, magazine_id, status
在select查询您有magazine_subscription_id, subscription_name, magazine_id, status
1这是不可能的。
如果要插入,则需要使用直接值查询插入
实际上,从一个表复制数据的MySQL查询是
Insert into table2_name (column_names) select column_name from table1
其中,从table1复制到table2的值
如果有一个像“ID”的主键,你必须排除它,例如我的PHP表有:ID,COL2,COL3,COL4列。 ID是主键,所以如果我运行这个代码:
INSERT INTO php (SELECT * FROM php);
我可能会得到这个错误:
#1062 - Duplicate entry '1' for key 'PRIMARY'
所以这里是解决scheme,我排除了“id”键:
INSERT INTO php ( col2,col3,col4) (SELECT col2,col3,col4 FROM php2);
所以我的新的PHP表已经有了所有的php2表行。
尝试这个。 你做错了。
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) )
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))
INSERT INTO destination_table ( Field_1, Field_2, Field_3) SELECT Field_1, Field_2, Field_3 FROM source_table;
但这是一个坏的MYSQL
做这个,而不是:
-
drop the destination table: DROP DESTINATION_TABLE;
-
CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
INSERT INTO mt_magazine_subscription SELECT * FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC