将数据从一个表插入到另一个表中
我想从一个表中读取所有数据并将一些数据插入到另一个表中。我的查询是将数据从一个表插入到另一个表中
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
试试这个。你做错了。
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)
)
它不会这样工作。
当您尝试使用查询插入行时,所有值都应该在查询中。
随着你想选择查询插入 magazine_subscription_id, subscription_name, magazine_id, status
上述问题,你有 magazine_subscription_id, subscription_name, magazine_id, status
1这是不可能的。
如果你想插入或者你需要使用直接值
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))
这不起作用,因为选择周围的额外父母不工作。请参阅文档: http://dev.mysql.com/doc/refman/5.0/en/insert-select.html 它的INSERT INTO db(列)SELECT列FROM WHERE blah = 1; – transformerTroy 2014-09-08 12:22:25
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);
其实从一个表到另一个用于复制数据的MySQL查询是Insert into table2_name (column_names) select column_name from table1
其中,从表1复制的值表2
INSERT INTO mt_magazine_subscription SELECT *
FROM tbl_magazine_subscription
ORDER BY magazine_subscription_id ASC
如果你想从一个表中的所有数据插入到另一个表有一个很简单的SQL
INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName);
我认为这是最好的答案 – 2016-12-25 22:54:34
令人惊叹。但我有一个问题:为什么这个工作?这个'select'返回到'insert into'? – 2017-07-15 17:23:12
如果有喜欢的一个主键“ID”你必须将它排除在外,例如我的PHP表有:ID,COL2,COL3,COL4列。 ID是主键,所以如果我运行此代码:
INSERT INTO php (SELECT * FROM php);
我可能得到这个错误:
#1062 - Duplicate entry '1' for key 'PRIMARY'
因此,这里的解决方案,我排除了 “标识” 键:
INSERT INTO php (col2,col3,col4) (SELECT col2,col3,col4 FROM php2);
所以我的新php表格已经有了所有的php2表格行。
这不起作用,因为围绕select的额外父母不工作。请参阅文档: http://dev.mysql.com/doc/refman/5.0/en/insert-select.html 它的INSERT INTO db(列)SELECT列FROM WHERE blah = 1; – transformerTroy 2014-09-08 12:23:18