美好的一天
我从其他一些表格列NEW_TABLE
创建了一个表格OLD_TABLE
。
我添加了一个类型为double
的新列ID
我想用唯一值填充ID列的值,然后将其设为NEW_TABLE
键。
有没有办法在MySQL中使用查询或set命令执行此操作?
我试过这样的事情:
Insert into NEW_TABLE
(select generateId() , col1, col2
from ORIGINAL_TABLE)
答案 0 :(得分:2)
通常在定义时将字段设置为自动增量字段。之后,您可以使用:
ALTER TABLE NEW_TABLE MODIFY ID int(10) unsigned NOT NULL auto_increment;
然后插入新记录并自动获取指定的ID,只需省略插入字段。
答案 1 :(得分:1)
试试这个:
Insert into NEW_TABLE
(select @row := @row + 1 as generateId, col1, col2
from ORIGINAL_TABLE, (SELECT @row := 0)row)
答案 2 :(得分:1)
你应该使用autoincrement和一个整数字段(你有什么理由要在那里使用双键吗?):
CREATE TABLE NEW_TABLE (
id INT NOT NULL AUTO_INCREMENT,
col1 CHAR(30) NOT NULL,
col2 CHAR(30) NOT NULL,
PRIMARY KEY (id)
)
答案 3 :(得分: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 ;