我有一张大桌子,我需要修改结构。
这是表结构。
表名:“文章”
+---------+---------------+-------------------+--------------+
| id(int) | details(text) | category(varchar) | tag(varchar) |
+---------+---------------+-------------------+--------------+
要点:
我需要改变什么
我创建了一个名为“category”的表,然后将category列作为该表的外键。
这就是我的期望:
我需要将类别名称移到类别表中,然后需要更新带有类别ID的文章表。
表名:“文章”
+---------+---------------+-------------------+--------------+
| id(int) | details(text) | category(int) | tag(varchar) |
+---------+---------------+-------------------+--------------+
表名:“类别”
+---------+-------------------+
| id(int) | category(varchar) |
+---------+-------------------+
是否可以只使用MySQL? (我知道如何使用一些PHP脚本和MySQL命令)。但我在这里问过它,因为如果我能用MySQL做到这一点我可以节省很多时间。
答案 0 :(得分:1)
假设category(id)
列自动填充(它是auto_increment列):
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;
我使用category(varchar)
和category(int)
来区分同一个表中的一个(int)category
列与另一个(varchar)category
。这当然在语法上是不正确的,您必须使用适当且不同的列名而不是category(xxx)