我想将table1复制到table2,除了'id'字段,因为我希望table2中的'id'自动递增。
这是我尝试过的解决方案之一......但没有工作: “INSERT INTO table2 SELECT field1,field2,field3 FROM table1 WHERE member_id = '53'”
答案 0 :(得分:2)
如果您(无论出于何种原因)想要为列命名,您可以选择NULL代替id。
假设您的两个表都包含member_id
,field1
,field1
,field3
列,您可以执行以下操作:
insert into table2 select NULL, field1, field2, field3 from table1 where member_id = '53';
注意:您必须使用此格式为所有列提供值。
答案 1 :(得分:1)
如果您不想填充目标表的所有列,则需要命名要填充的列
INSERT INTO table2 (table2_f1, table2_f2, table2_f3)
SELECT field1, field2, field3
FROM table1
WHERE member_id = '53'
答案 2 :(得分:0)
INSERT INTO table2(table2_f1,table2_f2,table2_f3) SELECT field1,field2,field3 FROM table1
如果将其设置为auto_increment
,则无需指定id答案 3 :(得分:-1)
最佳答案...... 使用临时表!
示例表 a 和表 b 有 3 列 b 有 6 列 两个表都有第一列 id。(但我们不希望将列 id 复制到表 b)
CREATE TEMPORARY TABLE temp AS SELECT * FROM a WHERE id=5;
UPDATE temp
SET id = NULL;
INSERT INTO b
SELECT *,'EFG',33,'ABCD' FROM temp;
DROP TEMPORARY TABLE temp;