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

thepoy 无  2019-07-04 12:05:27
自学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
...全文
112 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2019-07-04
引用 2 楼 thepoy 的回复:
[quote=引用 1 楼 二月十六 的回复:]
UPDATE movies SET 导演 = ( SELECT TOP 1 导演 FROM info WHERE movies.排名 = 序号);
"TOP 1"是什么意思呢?按您的代码运行,报错,把"TOP 1"删了,反而能达到预期效果了。[/quote] 奥奥你的事mysql,mysql用limit ,是防止出现一对多里边查询出一个结果集多条的问题,如果没有这个关系就不用加
回复
thepoy 2019-07-04
引用 1 楼 二月十六 的回复:
UPDATE movies SET 导演 = ( SELECT TOP 1 导演 FROM info WHERE movies.排名 = 序号);
"TOP 1"是什么意思呢?按您的代码运行,报错,把"TOP 1"删了,反而能达到预期效果了。
回复
二月十六 2019-07-04
UPDATE movies SET 导演 = ( SELECT TOP 1 导演 FROM info WHERE movies.排名 = 序号);
回复
发动态
发帖子
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
社区公告
暂无公告