两个表之间更新任意字段的sql查询

coogege 2011-12-29 11:04:38
有一个表a,字段a1有很多记录,且不重复
另外一个表b,字段有b1,c1,
b1有记录,c1有部分没有记录,c1的记录都是来自于a1,c1不重复

请问如何不重复的从a1中更新数据到c1中,让b表的c1全部有记录
...全文
134 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
把条件说详细点行么?
coogege 2011-12-29
  • 打赏
  • 举报
回复
两个表不需要任何关联。3楼的更新了ta2表里面所有的字段,那之前录入的已有数据就全变成你一个字段的值,为1了。


比如一个表是存放[城市.城市名称]的。另外一个文章表里面部分存放[文章.城市],城市字段大部分空缺了,需要补全。补全不需要有对应关系,要把城市表里面的数据依次更新到文章表中,而不是只把所有为空的更新为一个城市名称,要很多不同的城市名称,这个意思。
jmx123456789 2011-12-29
  • 打赏
  • 举报
回复

create table ta(a int)
create table ta2(b int ,c int)

insert into ta
select 1 union all
select 2 union all
select 3 union all
select 4

insert into ta2(b,c)
select 0,null union all
select 0,2 union all
select 0,null union all
select 0,4

--select * from ta
--select * from ta2

update ta2 set c=ta.a from ta
--where 1=1 找个条件关联就ok
SqlServer2008 2011-12-29
  • 打赏
  • 举报
回复
a b 表没法关联啊
zhq3k 2011-12-29
  • 打赏
  • 举报
回复
缺条件,你给的逻辑不够
jmx123456789 2011-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 coogege 的回复:]
两个表不需要任何关联。3楼的更新了ta2表里面所有的字段,那之前录入的已有数据就全变成你一个字段的值,为1了。
[/Quote]

--...后面条件没有当然更新所有啦 原本想让你自己加条件的


/*
将表中数据删除后重新添加....
最好ta2表中的数量少于ta 否则改改连接....
*/
declare @tab table(b int,c int)
insert into @tab
select b,a from
(select *,ROW_NUMBER() over(order by(select 1)) as id from ta2) t
inner join (select *,ROW_NUMBER() over(order by(select 1)) as id from ta) tab
on tab.id=t.id
--select * from @tab

delete from ta2 with(tablock)
insert into ta2
select * from @tab

select * from ta2

------------
0 1
0 2
0 3
0 4
yhnujm##33 2011-12-29
  • 打赏
  • 举报
回复
declare CurA cursor for select ID,城市 from B --声明游戏

open curA --打开
declare @BID int --存储B表ID
declare @Bcity varchar(30) --存储B表城市
declare @Acity varchar(30) --存储A表城市
fetch next from CurA into @BID,@Bcity
while @@Fetch_Status=0
begin
if(@Bcity='')
begin
--这部你由你自己去完成,从A表提取随机记录,插入同时更新B表
--提示
declare @RMax int
select @RMax=Max(Iden) from
(select row_number() over(order by DataPagerID) as Iden,* from DataPager) X

select * from
(select row_number() over(order by DataPagerID) as Iden,* from DataPager) X
where cast(Rand()*@RMax+1 as int)=X.Iden
end
fetch next from CurA into @BID,@Bcity
end
coogege 2011-12-29
  • 打赏
  • 举报
回复
表1:城市, 字段有:ID,城市
表2:文章, 字段有:ID,标题,城市

表1:有100条记录,都是城市名字,ID自增
表2:有1000条记录,ID自增,标题都有内容,城市有些有,有些为空。

表1示例:
1 york1
2 york2
3 york3
4 york4
....
100 york100

表2示例:
ID 标题 城市
1 title1 york33
2 title2 york5
3 title3
4 title4 york41
5 title5 york5
6 title6 Null
7 title7
8 title8 york99

要求:
补全表2城市为空的记录集,要求随机取表1的城市名称

得到类似如下的结果:
表2示例:
ID 标题 城市
1 title1 york33
2 title2 york5
3 title3 york1 <--此处为补全的城市名
4 title4 york41
5 title5 york5
6 title6 york66 <--此处为补全的城市名
7 title7 york7 <--此处为补全的城市名
8 title8 york99


niss 2011-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 coogege 的回复:]
两个表不需要任何关联。3楼的更新了ta2表里面所有的字段,那之前录入的已有数据就全变成你一个字段的值,为1了。


比如一个表是存放[城市.城市名称]的。另外一个文章表里面部分存放[文章.城市],城市字段大部分空缺了,需要补全。补全不需要有对应关系,要把城市表里面的数据依次更新到文章表中,而不是只把所有为空的更新为一个城市名称,要很多不同的城市名称,这个意思。
[/Quote]
请问你特定的某条记录的文章该更新成哪个城市?没有条件更新个p啊

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧