0

再会

NEW_TABLE从另一个表的一些列中创建了一个表OLD_TABLE

我添加了一个 IDdouble 类型的新列

我想用唯一值填充 ID 列的值,然后使其成为NEW_TABLE键。

有没有办法在 MySQL 中使用查询或设置命令来做到这一点?

我试过这样的事情:

Insert into NEW_TABLE
(select  generateId() , col1, col2 
 from ORIGINAL_TABLE)
4

4 回答 4

2

通常,您在定义字段时将其设置为自动递增字段。之后,您可以使用:

ALTER TABLE NEW_TABLE MODIFY ID int(10) unsigned NOT NULL auto_increment;

然后插入一条新记录并让它自动获得分配的 ID,只需从插入中省略该字段。

于 2012-07-23T08:38:47.927 回答
1

试试这个:

Insert into NEW_TABLE
(select   @row := @row + 1 as generateId, col1, col2 
 from ORIGINAL_TABLE, (SELECT @row := 0)row)
于 2012-07-23T08:37:11.937 回答
1

你应该使用自动增量和一个整数字段(你有什么理由想要一个双键吗?):

CREATE TABLE NEW_TABLE (
     id INT NOT NULL AUTO_INCREMENT,
     col1 CHAR(30) NOT NULL,
     col2 CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) 
于 2012-07-23T08:38:07.797 回答
1

为什么选择DOUBLE而不是整数数据类型?

ALTER TABLE NEW_TABLE
  MODIFY ID INT UNSIGNED NOT NULL AUTO_INCREMENT ;

ALTER TABLE NEW_TABLE
  ADD CONSTRAINT new_table_pk
    PRIMARY KEY (ID) ;

进而:

INSERT INTO NEW_TABLE 
  (col1, col2)
SELECT col1, col2 
FROM ORIGINAL_TABLE ;
于 2012-07-23T08:42:45.973 回答