SQL如何将一列数据替换到另一张表的一列里面

t1namevarTommy1Tommy2Tommy3Andy4t2var456结果:t3namevarTommy4Tommy5Tommy6Andy4现有两张表t1和t2... t1
name var
Tommy 1
Tommy 2
Tommy 3
Andy 4

t2
var
4
5
6

结果:
t3
name var
Tommy 4
Tommy 5
Tommy 6
Andy 4

现有两张表t1和t2 ,想写一条SQL语句将t1里面var一列的值替换成t2里面var一列的值,唯一条件是t1.name='Tommy' 。前提是这两张表查出来的行数是一致的!结果如t3。求大神解救!跪求一条SQL语句!要以最效率的方法update,如果能不用循环就最好了!
展开
 我来答
微风8009
2013-07-29 · TA获得超过304个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:166万
展开全部
update a
set var=b.var
from (select * from t1 where name='Tommy') a
inner join t2 b
on row_number() over (order by a.var)%3=row_number() over (order by b.var)
追问
Windowed functions can only appear in the SELECT or ORDER BY clauses.

报错了!
追答
update a
set var=b.var
from
(
select rowid=row_number() over (order by var),*
from t1
where name='Tommy'
) a
inner join
(
select rowid=row_number() over (order by var),*
from t2
) b
on a.rowid=b.rowid
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
2013-07-29 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2997万
展开全部
。。。没有关联,,怎么根据t2更新,,,为什么不直接根据数字的规律更新?
最效率的更新:
update t1 set var=var+3 where name='Tommy '
追问
不行!var不一定全部是数字!有可能为字母!而且不规则的!
追答
那你就只能在t1 和 t2中加个字段,叫他们按指定顺序排列,然后将这个字段当成t1,t2的关联字段,这样就可以更新了,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-29
展开全部
SQL的原理 你搞清楚了么?
数据库的原子性不满足,你这种想法只能说是很有意思。
数据库表的每一条记录都是一个单元,你想一条SQL替换整张表的记录的一列是不可能的。
通常想这种整张表都跟着变化的是需要写触发器来实现的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式