SQL查询 - 如何将相同的ID值添加到另一列的值?

时间:2014-02-21 11:57:11

标签: sql phpmyadmin

我有两列:

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 

我曾尝试使用DISTINCT,但无法弄清楚,有人可以帮忙吗?谢谢!

3 个答案:

答案 0 :(得分:0)

您可以通过各种方式执行此操作。一种方法是使用变量。

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子句中的变量赋值。

答案 1 :(得分:0)

我认为首先你必须为上面制作主表: 然后根据尊重PK-FK关系的名称更新外包密钥(ID)。

答案 2 :(得分:0)

试试这个:

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 Fiddle的工作代码:http://www.sqlfiddle.com/#!2/b831ed/1