Mysql 将一列移动到另一个表&;按外部ID更新该列

Mysql 将一列移动到另一个表&;按外部ID更新该列,mysql,sql,database,Mysql,Sql,Database,我有一张大桌子,我需要修改结构 下面是表格结构 表名:“文章” 要点: 此表中大约有25000(250000)行 大约有10万个独特的类别 我需要更改的内容 我创建了一个名为“category”的表,然后将category列作为该表的外键 这就是我所期望的: 我需要将类别名称移动到类别表,然后需要使用类别ID更新文章表 表名:“文章” 表名:“类别” 仅仅使用MySQL就可以吗?(我知道如何使用一些PHP脚本和MySQL命令来实现这一点)。但是我在这里问这个问题,因为如果我可以用MySQL来

我有一张大桌子,我需要修改结构

下面是表格结构

表名:“文章”

要点:

  • 此表中大约有25000(250000)行
  • 大约有10万个独特的类别
我需要更改的内容

我创建了一个名为“category”的表,然后将category列作为该表的外键

这就是我所期望的:

我需要将类别名称移动到类别表,然后需要使用类别ID更新文章表

表名:“文章”

表名:“类别”


仅仅使用MySQL就可以吗?(我知道如何使用一些PHP脚本和MySQL命令来实现这一点)。但是我在这里问这个问题,因为如果我可以用MySQL来做,我可以节省很多时间。

假设
类别(id)
列是自动填充的(它是自动增量列):


我使用
category(varchar)
category(int)
来区分同一表中的一列(int)
category
和另一列(varchar)
category
。当然,这在语法上是不正确的,您必须使用正确且不同的列名,而不是
category(xxx)

非常感谢。你为我节省了大约1-2个小时的时间。再次感谢。
+---------+---------------+-------------------+--------------+
| id(int) | details(text) | category(varchar) | tag(varchar) |
+---------+---------------+-------------------+--------------+
+---------+---------------+-------------------+--------------+
| id(int) | details(text) | category(int)     | tag(varchar) |
+---------+---------------+-------------------+--------------+
+---------+-------------------+
| id(int) | category(varchar) |
+---------+-------------------+
SET FOREIGN_KEY_CHECKS=0;

INSERT INTO Category( category )
SELECT DISTINCT category(varchar)
FROM Articles;

UPDATE Articles a, Category c
SET a.category(int) = c.id
WHERE a.category(varchar) = c.category
;

SET FOREIGN_KEY_CHECKS=1;