mysql条件连接/搜索替换

时间:2013-06-21 18:50:20

标签: mysql database

我有两张这样的表:

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

3 个答案:

答案 0 :(得分:0)

这应该有效:

UPDATE movies, actors
SET movies.id = actors.value
WHERE movies.value = actors.movie_value AND actors.type LIKE 'movie%'

答案 1 :(得分:0)

试试这个

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

DEMO HERE

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

答案 2 :(得分:0)

首先欢迎来到Stackoverflow(: 由于演员可以与许多电影和连续剧有关,而电影或系列有很多演员,我建议你使用agregation。以下是一些方法,


Diagram1
这个例子(以我的拙见)使事情变得更加清晰,允许你为系列和电影定义特定的特征;这里的演员也可以同时兼顾电影和连续剧。


Diagram2
这个非常简单,并在一个表格中汇总电影和系列信息。如有必要,特殊性将存储在分区表中。


如果您需要,我有完整的脚本。 也许这不完全是你的目标,在这种情况下你不应该忘记明确指出每个领域的表。由于您正在处理两个表,因此mysql不知道某个列(在您的示例中, id )来自何处。

问候,

莱昂纳多