1

我有两张这样的桌子:

电影

id | value
-------------
1  | 10
2  | 11
3  | 12
4  | 13

演员

id | movie_value |type   | value
-------------------------------
1  |  10         | movie  | 21
2  |  11         | movie  | 22
3  |  12         | movie  | 23
4  |  13         | series | 13

电影和演员之间没有关系,我知道这很奇怪。我想像那样转换电影表的“movie_id”。条件行=类型/电影。

电影

id | movie_id 
-------------
1  | 21
2  | 22
3  | 23
4  | 13

某种搜索/替换数字。这可能在 MySql 上吗?

我的查询不起作用:

UPDATE movies
INNER JOIN actors ON movies.value = actors.movie_value AND actors.type='movie'
SET id = actors.value
4

3 回答 3

0

这应该有效:

UPDATE movies, actors
SET movies.id = actors.value
WHERE movies.value = actors.movie_value AND actors.type LIKE 'movie%'
于 2013-06-21T18:56:31.880 回答
0

尝试这个

 UPDATE  movies m
 INNER JOIN actors a ON m.value = a.movie_value 
 SET m.`value` = a.`value` 
 WHERE a.type='movie'

在这里演示

在您的查询中,您忘记了 WHERE 子句。

于 2013-06-21T18:59:47.810 回答
0

首先欢迎使用 Stackoverflow(:
由于一个演员可以与很多电影和连续剧相关,而一部电影或连续剧有很多演员,我建议你使用聚合。这里有一些方法,


图1
这个例子(以我的拙见)使事情变得更加清晰,允许您定义系列和电影的特定特征;这里的演员也可以出演电影和电视剧。


图2
这很简单,将电影和系列信息汇总在一张表中。如有必要,特殊性将存储在分区表中。


如果你想要的话,我有整个剧本。也许这不是你的目标,在这种情况下你不应该忘记明确指出每个字段的表。由于您正在处理两个表,因此 mysql 不知道某个列(在您的示例中为id)来自哪里。

问候,

莱昂纳多

于 2013-06-21T20:50:12.490 回答