首先,您不能转换此表。你将不得不使用新的。一个简单的方法是将此表用作临时表。创建新表格。然后从该表中选择并添加到这些表中。您将不得不为每个表标识主键。然后填写表格(您可能必须先确定要填充哪个表格以便参考完整性等)。
Sudo code eg : insert into files(columns..)Select <files columns> from files_shit group by primary_colum;
(注 - 这意味着你将使用的主塔(S)作为主键。如果要使用自动生成的整数(最佳),你将不得不执行查找...)
批次取决于新的模式和关系(您在此没有明确定义)。希望这可以帮助。
编辑 - 查找
你将不得不为每个table.eg的INT id字段。 file_id的。这些将会是系统生成的(主要是auto_increment)。简而言之,此信息不在您当前的表格中。所以,当你添加一个文件到文件表中,并且它得到一个file_id时,你必须'查找'这个文件的id以添加到用户表中以满足你的外键关系(根据它们的存在方式) 。 SIMPLE EG - 尝试将其他file_id/tag_id列添加到主表中。
首先填写标签表(基本上不提及任何其他)。
通过加入标签表(查找)填充每个行的主表tag_id。
UPDATE <mainTable> mT JOIN tag_table tT on mT.tag_pk_column= tT.tag_pk_column
SET mT.tag_id = tT.tag_id
现在插入文件...选择file_pk_col,TAG_ID组由file_pk_col
- 这是对标签表格的例子查找。
来源
2011-03-17 02:57:32
Jai
你是什么意思“你将不得不执行查找...”什么是查找?你能用SQL来回答吗?关系:'用户1 ----- n文件n ----标签'(最后一个可以进一步优化)。谢谢。 – jcubic 2011-03-17 10:10:23
@jcubic请参阅编辑以进行查找。 Ps - 如果你有多对多关系,你可能需要一个表来指定那些FILE_TAGS(file_id,tag_id)类型。 – Jai 2011-03-17 12:08:06
是的,我知道我跳过这个来限制我的问题中的表格数量。哇。我可以在UPDATE内部加入吗?真棒。我可以在单个UPDATE中使用SELECT,JOIN和GROUP BY吗? – jcubic 2011-03-17 19:25:53