如何利用子查询一次更新多行数据

[复制链接]
查看11 | 回复8 | 2007-3-30 06:18:53 | 显示全部楼层 |阅读模式
小弟是oracle菜鸟,在oracle 11g环境,现有一问题请教:
有ships和jobs二个表,结构如下:
ships:
ship_id ship_name
1
usa
2
usa
3
usa
4
usa
5
usa
jobs:
employee_id title
report_to

ceo

cfo

director

manager

usa


usa
7

usa
8

usa
9

usa
10
请问如何用一条语句,用ships表的ship_id将jobs里最后五行的employee_id更新?


回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
merge
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
HuiYiSky 发表于 2013-1-10 13:01
merge

能写出来吗?我刚试了下,报错。
merge into jobs using ships
on (ships.ship_name=jobs.title)
when matched then update set
jobs.employee_id=ships.ship_id;


"unable to get a stable set of rows in the source tables"
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
我觉得merge只是把几个语句合并到一起。上面如果用子查询会返回5个值,而这5个值到底要赋予哪个title对应的employee_id呢?有五个title都是'usa',这才是问题所在,也许这根本就没有一条语句可以做得到?
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
有这种业务需求吗 不符合逻辑啊都是根据唯一值更新,根据重复值更新唯一值好像不行吧
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
要得到什么结果啊
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
需求不明确!
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
我也觉得是需求不明确。这分明意思就是jobs表里最后那五行employee_id的取值取ship_id随便一个值都行啊。
回复

使用道具 举报

千问 | 2007-3-30 06:18:53 | 显示全部楼层
不明白
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行