2013-10-22 103 views
0

我有一个名为船员表,该表是这样的复制内容

Crew( 
    ID int(11) NOT NULL UNIQUE, #every crew member has a unique ID associated with 
MovieID INT(11) NOT NULL, 
Name TEXT, 
Position varchar(32), #role of the person in the movie 
role_id int(11); 
    PRIMARY KEY (ID), 
FOREIGN KEY (Worked_in) REFERENCES MOVIEDATABASE.Imdb(title) 
    ) 

和另一个表

`cast_info` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `person_id` int(11) NOT NULL, 
    `movie_id` int(11) NOT NULL, 
    `person_role_id` int(11) DEFAULT NULL, 
    `note` text, 
    `nr_order` int(11) DEFAULT NULL, 
    `role_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `idx_pid` (`person_id`), 
    KEY `idx_mid` (`movie_id`), 
    KEY `idx_cid` (`person_role_id`), 
    KEY `cast_info_role_id_exists` (`role_id`) 

) 我想复制cast_info中的movie_id到Crew中的MovieID以及cast_info的person_id的数据条目与Crew中的ID相对应。 Crew是数据库'Mine',而role_type表来自另一个名为'imdb'的数据库。我已经尝试使用插入忽略像这样,但它被卡住了很长时间,并没有完成执行。

insert ignore into Crew(MovieID) select C1.movie_id from imdb.cast_info as  
C1,imdb.cast_info as C2,Crew where C1.role_id!=C2.role_id AND Crew.ID=C1.person_id; 

这里是关于cast_type表的一些信息。船员表大部分是空的,只有填补这样的ID列我没有张贴在这里

+----+-----------+----------+----------------+------+----------+---------+ 
| id | person_id | movie_id | person_role_id | note | nr_order | role_id | 
+----+-----------+----------+----------------+------+----------+---------+ 
| 1 |   1 | 1005336 |    1 | NULL |  NULL |  1 | 
| 2 |   2 | 2248922 |    1 | NULL |  25 |  1 | 
| 3 |   2 | 2416848 |    2 | NULL |  22 |  1 | 
| 4 |   3 | 1923237 |   NULL | NULL |  12 |  1 | 
| 5 |   4 | 1745461 |    3 | NULL |  NULL |  1 | 
+----+-----------+----------+----------------+------+----------+---------+ 
+1

提供一些示例数据以理解Crew和cast_info之间的关系。 –

+0

刚刚添加样本数据 – user2905978

+0

我还是不明白你想要做什么。在你试图插入的时候,你尝试在Crew中插入一些东西,据说已经在那里。 –

回答

0

检查,如果这个工程出

与你的数据库名称

update database1.Crew cr join database2.cast_info ci on cr.id=ci.person_id set cr.MovieID = ci.movie_id 

我更换我不清楚你为什么指定role_type

+0

它的工作。非常感谢。所以你基本上在这里做一个左连接? – user2905978

+0

没有。如果默认情况下没有指定,MySQL会认为它是'INNER JOIN' – shiva