【发布时间】:2014-08-28 21:26:26
【问题描述】:
我想将 table1 复制到 table2,除了 'id' 字段,因为我希望 table2 中的 'id' 自动递增。
这是我尝试过的解决方案之一......但不起作用: "INSERT INTO table2 SELECT field1, field2, field3 FROM table1 WHERE member_id = '53'"
【问题讨论】:
我想将 table1 复制到 table2,除了 'id' 字段,因为我希望 table2 中的 'id' 自动递增。
这是我尝试过的解决方案之一......但不起作用: "INSERT INTO table2 SELECT field1, field2, field3 FROM table1 WHERE member_id = '53'"
【问题讨论】:
如果您不想(无论出于何种原因)命名列,则可以选择 NULL 代替 id。
假设您的两个表都有member_id、field1、field1、field3 列,按此顺序,您可以:
insert into table2 select NULL, field1, field2, field3 from table1 where member_id = '53';
注意:您必须使用此格式为所有列提供值。
【讨论】:
如果不想填充目标表的所有列,则需要命名要填充的列
INSERT INTO table2 (table2_f1, table2_f2, table2_f3)
SELECT field1, field2, field3
FROM table1
WHERE member_id = '53'
【讨论】:
插入到 table2 (table2_f1, table2_f2, table2_f3) 选择字段 1、字段 2、字段 3 从表 1
如果设置为auto_increment则不需要指定id
【讨论】:
最佳答案....... 使用临时表!
示例表 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;
【讨论】: