【问题标题】:Copy one table to another except the id filed将一个表复制到另一个表,除了 id 字段
【发布时间】:2014-08-28 21:26:26
【问题描述】:

我想将 table1 复制到 table2,除了 'id' 字段,因为我希望 table2 中的 'id' 自动递增。

这是我尝试过的解决方案之一......但不起作用: "INSERT INTO table2 SELECT field1, field2, field3 FROM table1 WHERE member_id = '53'"

【问题讨论】:

    标签: mysql copy field


    【解决方案1】:

    如果您不想(无论出于何种原因)命名列,则可以选择 NULL 代替 id。

    假设您的两个表都有member_idfield1field1field3 列,按此顺序,您可以:

    insert into table2 select NULL, field1, field2, field3 from table1 where member_id = '53';

    注意:您必须使用此格式为所有列提供值。

    【讨论】:

    • 这个答案意味着他每次添加新列时都必须更新查询。
    【解决方案2】:

    如果不想填充目标表的所有列,则需要命名要填充的列

    INSERT INTO table2 (table2_f1, table2_f2, table2_f3)
    SELECT field1, field2, field3 
    FROM table1 
    WHERE member_id = '53'
    

    【讨论】:

      【解决方案3】:

      插入到 table2 (table2_f1, table2_f2, table2_f3) 选择字段 1、字段 2、字段 3 从表 1

      如果设置为auto_increment则不需要指定id

      【讨论】:

        【解决方案4】:

        最佳答案....... 使用临时表!

        示例表 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;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-20
          • 1970-01-01
          相关资源
          最近更新 更多