通过在mysql中添加一个自动增量列,从select和alter table创建表

时间:2011-01-11 17:13:26

标签: mysql select auto-increment

正如在主题中简要解释的那样,我需要通过选择现有值来创建表。 我想要实现的是让另一列具有自动递增值。

这是我已经尝试过的:

CREATE TEMPORARY TABLE temp_tb (    
    `row_id` bigint(20) NOT NULL AUTO_INCREMENT,
    `stm_id` bigint(20) NOT NULL,
    descr varchar(20) NOT NULL,
    PRIMARY KEY (row_id)
);

然后选择:

INSERT INTO temp_tb (
  select stm_id,descr from tb_export
)

我原本希望在插入时预填充row_id列,但是我只是在sql语法错误时告诉我列数与值计数不匹配。

你知道这是否有可能实现吗?

感谢

2 个答案:

答案 0 :(得分:1)

您应该提供要插入temp_tb的列的名称:

INSERT INTO temp_tb (stm_id, descr) (
  select stm_id,descr from tb_export
)

答案 1 :(得分:0)

如果我没有弄错,语法错误与您的插入语法有关。你有一个temp_tb有3个字段,都不是null。您使用insert语句在该表中插入2个字段。 MySQL ref使用select as:

列出insert的语法

INSERT INTO tbl_temp2(fld_id)   SELECT tbl_temp1.fld_order_id   FROM tbl_temp1 WHERE tbl_temp1.fld_order_id> 100;