2012-07-23 33 views
0

美好的一天向mySql中的现有表添加唯一值

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

我添加型双

我要填写具有唯一值的ID列的值,然后使之成为了NEW_TABLE键的新列“ID”。

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

可能像

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

感谢

+1

您可以使用自动增量 – Samson 2012-07-23 08:37:24

+0

为什么'DOUBLE'而不是'INT'或'BIGINT'? – 2012-07-23 08:37:38

回答

1

试试这个:

Insert into NEW_TABLE 
(select @row := @row + 1 as generateId, col1, col2 
from ORIGINAL_TABLE, (SELECT @row := 0)row) 
1

您应该使用自动增量和整型字段(没有任何理由让你想要一个双排键有?):

CREATE TABLE NEW_TABLE (
    id INT NOT NULL AUTO_INCREMENT, 
    col1 CHAR(30) NOT NULL, 
    col2 CHAR(30) NOT NULL, 
    PRIMARY KEY (id) 
) 
2

通常,您将字段设置为自定义增量字段。要做到这一点之后,你可以使用:

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

为了再插入一个新的记录,并且它可以自动获得一个分配的ID,只是从插入忽略的领域。

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 ;