我需要将一个表分成2个.1个表与另一个表有一对多的关系。
这些表格可以显示演出。不止一个人可以在节目中扮演相同的角色,因此我需要一个角色表,它与表演者的名字有一对多的关系(也就是说,可能有一群人都扮演“市民”)。
因此,细分将是:
credits_roles - 主表。 credits_names - 执行者的名字(与titles_roles中的id列的关系)。
最初,它是在一个表格中构建的。每一行都有不同的表演者和角色。这导致网站上的多个查询出现问题,这种中断将简化操作。
我使用INSERT语句和GROUP BY将我需要的数据移动到credits_roles中。 credits_roles现在只有独特的角色。
我遇到问题的是UPDATE语句,它将在credits_roles中查找id并将其添加到credits_names中的credits_roles_id列。
这就是我所拥有的。
UPDATE credits_names
INNER JOIN credits_roles
ON credits_names.role_id = credits_roles.role_id AND credits_names.show_id = credits_roles.show_id AND credits_names.credit_class = credits_roles.credit_class
SET credits_names.credit_role_id = credits_roles.id
credits_names是原始表,目前拥有所有数据。该项目完成后,其中一些将被删除。现在,我根据角色的ID加入(因为“市民”会从一个单独的角色表中拥有它自己的id),这些积分所用的节目的ID,然后有一个credit_class(用于演员与工作人员,或表格中的CA与CR)。所有这些都需要匹配才能查找credits_roles.id。
问题是查询一直在运行......并且正在运行......并且正在运行。我让它一夜之间运行,它永远不会完成。 credit_names中有300,000条记录。但是当我停止查询时,没有进行任何更新。
所以,我的问题是,在这个查询中需要更改什么?这似乎是一个简单的更新,但它没有做任何事情。或者,如果不是这个查询,我需要做什么呢?