2012-07-23 34 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 ;