我有两张这样的表:
影
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
答案 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'
在你的查询中你忘记了WHERE子句。
答案 2 :(得分:0)
首先欢迎来到Stackoverflow(: 由于演员可以与许多电影和连续剧有关,而电影或系列有很多演员,我建议你使用agregation。以下是一些方法,
这个例子(以我的拙见)使事情变得更加清晰,允许你为系列和电影定义特定的特征;这里的演员也可以同时兼顾电影和连续剧。
这个非常简单,并在一个表格中汇总电影和系列信息。如有必要,特殊性将存储在分区表中。
如果您需要,我有完整的脚本。 也许这不完全是你的目标,在这种情况下你不应该忘记明确指出每个领域的表。由于您正在处理两个表,因此mysql不知道某个列(在您的示例中, id )来自何处。
问候,
莱昂纳多