首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询-如何向来自另一列的值中添加相同的ID值?

SQL查询-如何向来自另一列的值中添加相同的ID值?
EN

Stack Overflow用户
提问于 2014-02-21 11:57:10
回答 3查看 181关注 0票数 0

我有两栏:

代码语言:javascript
运行
复制
ID   name 
--------------
NULL Bose 
NULL Bose 
NULL Computer 
NULL Bose 
NULL Monitor 
NULL Monitor 
NULL Computer 
NULL Bose 
NULL Phone 
NULL Computer

需要添加这样的唯一值:值应该从400这样的数字开始。

代码语言:javascript
运行
复制
ID name 
------------
400 Bose 
400 Bose 
401 Computer 
400 Bose 
402 Monitor 
402 Monitor 
401 Computer 
400 Bose 
403 Phone 
401 Computer 

我已经试过了,但是我想不出来,有人能帮忙吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-21 12:34:47

试试这个:

代码语言:javascript
运行
复制
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

票数 0
EN

Stack Overflow用户

发布于 2014-02-21 12:02:29

你可以用不同的方式做这件事。一种方法是使用变量。

代码语言:javascript
运行
复制
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子句中的变量赋值。

票数 0
EN

Stack Overflow用户

发布于 2014-02-21 12:06:39

我认为,首先您必须为上面的主表:然后根据尊敬的PK关系的名称更新前键(I)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21933866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档