「MySQL」UPDATE如何将B表的一列数据导入到A表中?

thepoy
  • 25

问题描述

自学MySQL时,创建了两个表,一个表是movies,一个表是info,info里只有一列「导演」的名字,而movies里「导演」的内容均为NULL。

TABLE movies:

+--------+-----------------------------+-----------------------------+--------+--------+
| 排名   | 电影名                      | 类型                        | 评分   | 导演   |
+--------+-----------------------------+-----------------------------+--------+--------+
|      1 | 《肖申克的救赎》            | 犯罪 剧情                   |    9.6 | NULL   |
|      2 | 《霸王别姬》                | 剧情 爱情 同性              |    9.6 | NULL   |
|      3 | 《这个杀手不太冷》          | 剧情 动作 犯罪              |    9.4 | NULL   |
|      4 | 《阿甘正传》                | 剧情 爱情                   |    9.4 | NULL   |
|      5 | 《美丽人生》                | 剧情 喜剧 爱情 战争         |    9.5 | NULL   |
|      6 | 《泰坦尼克号》              | 剧情 爱情 灾难              |    9.4 | NULL   |
|      7 | 《千与千寻》                | 剧情 动画 奇幻              |    9.3 | NULL   |
+--------+-----------------------------+-----------------------------+--------+--------+

TABLE info

+--------+-------------------------+
| 序号   | 导演                    |
+--------+-------------------------+
|      1 | 弗兰克·德拉邦特         |
|      2 | 陈凯歌                  |
|      3 | 吕克·贝松               |
|      4 | 罗伯特·泽米吉斯         |
|      5 | 罗伯托·贝尼尼           |
|      6 | 詹姆斯·卡梅隆           |
|      7 | 宫崎骏                  |
+--------+-------------------------+

使用UPDATE movies SET 导演 = ( SELECT 导演 FROM info);

报错:

ERROR 1242 (21000): Subquery returns more than 1 row
回复
阅读 2k
4 个回答

不是这样搞的,老铁。
你要把导演插到movies表里,是不是应该要有个电影跟导演的对应关系?
例如《肖申克的救赎》的movie_id是10,那么对应的info表里这部电影的导演也应该有一个movie_id列,并且是10,这样两个表才能对应起来,这就是关系数据库。
你要把导演更新进去,通过两个表关联,首先按照movie_id查出对应的导演,再把对应的导演更新到movies表里。

我想是不是可以建一个触发器,当更新表的时候触发,然后在触发器里面执行插入操作。

兄弟,没有关联关系……

insert into movies (导演) select 导演 from info;

宣传栏