首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向表中的每个唯一值添加in

如何向表中的每个唯一值添加in
EN

Stack Overflow用户
提问于 2015-07-24 01:17:58
回答 1查看 32关注 0票数 0

我在mysql中有一个表,其中有一个包含文本值的列,比如说宠物。因此,我会有一个价值观的专栏宠物:“猫”,“狗”,“乌龟”,“猫”,“猫”,“乌龟”。实际上,在该专栏中有数十万种不同的宠物类型,但许多重复。

我想要做的是创建第二列,它对第一列中的每个条目都有一个索引。例如,在上述情况下,我们会指定“cat”的id为1,“狗”的id为2,“海龟”的id为3等,最后得到一个值为1、2、3、1、1、3的列。

有办法这样做吗?(最好是一种快速的方法,因为表超过700万行)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-24 01:24:12

创建一个具有查找值的新表。您可以轻松地做到这一点:

代码语言:javascript
复制
create table PetTypes as
    select (@rn := @rn + 1) as pettypeid, pettype
    from (select distinct pettype from pets) p cross join
         (select @rn := 0) params;

然后,您可以很容易地添加、更新或只使用select中的列:

代码语言:javascript
复制
alter table pets add petttypeid int;

update pets p join
       pettypes pt
       on p.pettype = pt.pettype
    set p.pettypeid = pt.pettypeid;

然后,我建议从原始表中删除pettype列。

注意:您可以在不创建新表的情况下完成上述操作。但是我认为为这个列创建一个新的查找表是正确的方法。

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

https://stackoverflow.com/questions/31600643

复制
相关文章

相似问题

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