Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将表从varchar移动到int_Mysql - Fatal编程技术网

MySQL将表从varchar移动到int

MySQL将表从varchar移动到int,mysql,Mysql,我正在将具有varchar(64)类别id列的旧螳螂表移动到具有int(10)类别id列的新螳螂表 简化结构如下所示 错误表(旧数据库) +----+-------------+-------------+--------+ |id |项目id |类别id |报告| +----+-------------+-------------+--------+ |1 | 0 |服务器|崩溃| |2 | 0 |数据库|错误| |3 | 1 |服务器|错误| |4 | 1 |服务器|崩溃| +----+--

我正在将具有
varchar(64)
类别id列的旧螳螂表移动到具有
int(10)
类别id列的新螳螂表

简化结构如下所示

错误表(旧数据库)

+----+-------------+-------------+--------+
|id |项目id |类别id |报告|
+----+-------------+-------------+--------+
|1 | 0 |服务器|崩溃|
|2 | 0 |数据库|错误|
|3 | 1 |服务器|错误|
|4 | 1 |服务器|崩溃|
+----+-------------+-------------+--------+

类别表(新数据库)

+----+------------+----------+
|id |项目| id |名称|
+----+------------+----------+
|0 | 1 |服务器|
|1 | 1 |数据库|
|2 | 2 |服务器|
|3 | 2 |数据库|
+----+------------+----------+

我需要一个神奇的查询,它将用category\u表中的数字
category\u id
替换category\u表中的
category\u id
。谢天谢地,我能够通过
project\u id
匹配行,通过
name
匹配类别

这是我正在研究的问题,但我已经陷入了复杂性


更新bug\u table b使用category\u table设置b.category\u id=c.id,其中b.category\u id=c.name

我喜欢以与新查找/参考表不同的方式处理此任务

  • 对我来说,新的category表只有id和name列。基于示例数据,只有两行:服务器和数据库。是的,我意识到可能还有其他名称,但这些名称可以很容易地添加,并且应该在继续最大化后面的id匹配之前添加

  • 接下来,我将向bug表中添加一个新列,该列可以称为“category_new”,其数据类型将存储新的类别id。或者,您可以将现有的类别id列重命名为category,然后id的新列可以是column_id

  • 完成所有这些操作后,您可以通过在名称上加入类别来更新新列,并设置匹配的id:(注意这假设采用步骤2中提到的替代方法)

  • 运行后,检查新列以验证更新的id

  • 最后,在成功更新之后,现在可以删除bug_表中的旧category_id列(带有名称),并且category_新列可以重命名为category_id

  • =====

    请注意,如果您决定使用前面提到的替代列方法,那么查询当然会类似,但略有不同。然后,只需要在末尾放置一个列


    如果有其他表应用相同的类别更改,则这些表的操作(基本上是步骤2到步骤5)也将类似。

    谢谢,我将试一试。但是项目id是完整的,它是Mantis表的一部分,每个项目都有自己的类别。
    UPDATE bug_table JOIN category_table ON bug_table.category_id = category_table.name 
    SET bug_table.category_new = category_table.id