我的数据库中有大约1000个条目:
id name
0 elephant
0 snake
0 monkey
....我希望以后不要更改所有的身份证。所以看起来是这样的:
id name
1 elephant
2 snake
3 monkey
....如何使用SQL实现这一目标?
发布于 2018-05-11 10:58:29
一个选项是利用新表中的自动增量列,然后将先前的内容插入到该表中。首先,创建一个具有自动增量id的新表:
CREATE TABLE newTable (
id INT AUTO INCREMENT NOT NULL,
name varchar(255)
);现在,将旧表插入新表:
INSERT INTO newTable (name)
SELECT name FROM oldTable; -- you may select multiple columns here这里有两个潜在的缺点:现在您有一个可能需要删除的旧表,而分配给名称的顺序也是任意的。但是,在缺乏如何分配in的逻辑的情况下,这种方法似乎是合理的。
发布于 2018-05-11 10:57:26
这是一步一步的解决你的问题,希望,解决你的问题。
mysql> create table dt1(id int,name varchar(20));
mysql> insert into dt1 values(0,'elephant');
mysql> insert into dt1 values(0,'snake');
mysql> insert into dt1 values(0,'monkey');
mysql> select * from dt1;
+------+----------+
| id | name |
+------+----------+
| 0 | elephant |
| 0 | snake |
| 0 | monkey |
mysql> update dt1 x join (select id,name,@r:=@r+1 as new_id from dt1,(select @r := 0)r) y on (x.name = y.name) set x.id = y.new_id;
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from dt1;
+------+----------+
| id | name |
+------+----------+
| 1 | elephant |
| 2 | snake |
| 3 | monkey |https://stackoverflow.com/questions/50290646
复制相似问题