我有两栏:
ID   name 
--------------
NULL Bose 
NULL Bose 
NULL Computer 
NULL Bose 
NULL Monitor 
NULL Monitor 
NULL Computer 
NULL Bose 
NULL Phone 
NULL Computer需要添加这样的唯一值:值应该从400这样的数字开始。
ID name 
------------
400 Bose 
400 Bose 
401 Computer 
400 Bose 
402 Monitor 
402 Monitor 
401 Computer 
400 Bose 
403 Phone 
401 Computer 我已经试过了,但是我想不出来,有人能帮忙吗?谢谢!
发布于 2014-02-21 12:34:47
试试这个:
UPDATE  your_table s
JOIN
(SELECT (@r:=@r+1) rn, t.name FROM
(SELECT DISTINCT name FROM your_table) t
,(SELECT @r:=399) nums) tab
ON tab.name = s.name
SET s.ID = tab.rn;以下是SQL的工作代码:http://www.sqlfiddle.com/#!2/b831ed/1
发布于 2014-02-21 12:02:29
你可以用不同的方式做这件事。一种方法是使用变量。
update table t cross join
       (select @name := '',@prevname := '',  @id := 399) const
    set id = (case when (@prevname := @name) is null then null
                   when (@name := name) is null then null
                   when @prevname = name then @id
                   else @id := @id + 1
              end)
    order by name;case语句的使用只是为了允许update子句中的变量赋值。
发布于 2014-02-21 12:06:39
我认为,首先您必须为上面的主表:然后根据尊敬的PK关系的名称更新前键(I)。
https://stackoverflow.com/questions/21933866
复制相似问题