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,如果能不用循环就最好了! 展开
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,如果能不用循环就最好了! 展开
展开全部
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)
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。没有关联,,怎么根据t2更新,,,为什么不直接根据数字的规律更新?
最效率的更新:
update t1 set var=var+3 where name='Tommy '
最效率的更新:
update t1 set var=var+3 where name='Tommy '
追问
不行!var不一定全部是数字!有可能为字母!而且不规则的!
追答
那你就只能在t1 和 t2中加个字段,叫他们按指定顺序排列,然后将这个字段当成t1,t2的关联字段,这样就可以更新了,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-29
展开全部
SQL的原理 你搞清楚了么?
数据库的原子性不满足,你这种想法只能说是很有意思。
数据库表的每一条记录都是一个单元,你想一条SQL替换整张表的记录的一列是不可能的。
通常想这种整张表都跟着变化的是需要写触发器来实现的。
数据库的原子性不满足,你这种想法只能说是很有意思。
数据库表的每一条记录都是一个单元,你想一条SQL替换整张表的记录的一列是不可能的。
通常想这种整张表都跟着变化的是需要写触发器来实现的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询