2012-01-14 41 views
-1

具有100K行的MySql 5.3表具有主键。mysql如何通过自动递增列来更新表

还有一个整数列,它不是键的一部分。我想更新此列以包含表格的唯一编号。例如。对于第一条记录,它应该包含1,对于第二条记录等。

这也可以是自动增量列,但MySql不允许在非键列上自动递增。我不希望这个列成为密钥的一部分,因为它从文件中填充的方式等。

那么这样的查询会是怎样的呢?

+1

-1。你想要一个唯一的密钥来表示一个基于插入行数的序列,而不是主键?你究竟在做什么数据库?! – jmkeyes 2012-01-14 22:56:08

+0

首先,保存加载记录的顺序(来自外部数据库)。其次,为了节省空间。原来的主键很长,我对这个表格做了很多参考。因此,我不是在每个引用中重复几个关键列,而是在列上创建并在引用中使用它。一些其他导入的表已经使用长主键引用 - 因此两个键都必须保留。 – camcam 2012-01-15 01:14:57

+0

所以你想引用表中的某些行?为什么不只是引用主键,而不是创建一个全新的列来复制主键的功能? – jmkeyes 2012-01-15 01:41:46

回答

5

我不知道你为什么要做这样的事情,而是一个可能的解决方案是这样的:

set @rownum:=0; 
update <table> set column = @rownum:=rownum+1 order by <field> 
+2

谢谢! @rownum:= @ rownum + 1也可以直接在SET子句中的LOAD DATA INFILE中使用 – camcam 2012-01-15 01:30:41