SQL两表关联批量更新一列数据下面有数据参考

我想批量更新一张表的数据,数据类型是这样的
A表 rlb_num,prod_id,line_num B表 rlb_num
A0001 C 01 1 A0001
A0001 C02 2 A0002
A0002 C01 3 A0003
A0002 C02 4
我想要的结果是把 A表里面的line_num批量更新为下面这种状态
A0001 C 01 1
A0001 C02 2
A0002 C01 1
A0002 C02 2

第1个回答  2013-07-19
        
CREATE TABLE test(rlb_num VARCHAR(10),
  prod_id VARCHAR(10),
  line_num INT)
INSERT INTO dbo.test
        ( rlb_num, prod_id, line_num )
SELECT
'A0001','C01',1
UNION ALL
SELECT 
'A0001','C02',2
UNION ALL
SELECT 
'A0002','C01',3
UNION ALL
SELECT 
'A0002','C02',4
--SELECT * FROM test
---sqlserver2005及以上版本
UPDATE t1 SET t1.line_num=t2.id
FROM test t1 INNER JOIN 
(
SELECT ROW_NUMBER() OVER(PARTITION BY rlb_num ORDER BY prod_id) id,*
FROM test
) t2 ON t1.line_num=t2.line_num
----通用型
UPDATE t1 SET t1.line_num=t2.id
FROM test t1 INNER JOIN 
(
SELECT *,(SELECT COUNT(1) FROM test WHERE rlb_num=a.rlb_num AND prod_id<=a.prod_id) AS id
FROM test a
) t2 ON t1.line_num=t2.line_num
-----结果:
A0001 C01 1
A0001 C02 2
A0002 C01 1
A0002 C02 2

第2个回答  2013-07-19
UPDATE [Table_2]
SET [Table_2].[line_num] = r
FROM [Table_2]
INNER JOIN ( SELECT * ,
rank() OVER ( PARTITION BY [rlb_num] ORDER BY [prod_id] ) AS r
FROM [Table_2]
) a ON [Table_2].[rlb_num] = a.[rlb_num]
AND [Table_2].[prod_id] = a.[prod_id]
第3个回答  2013-07-19
update tb set line_num=case prod_id when 'c01' then 1 else 2 end
操作前先select查询确保达到要求再执行追问

我A表数据不是只有C01 C02 有可能单号 A0001 有 C01,C02,C03,C04 没有规律性

追答update tb set line_num=convert(int,right(prod_id,2))
--如果位数确定的话可以这样

追问

对于上面这个问题我可能表达不是很清晰
我在新的问题做了补充 麻烦大家帮下我 谢谢
http://zhidao.baidu.com/question/571997180.html
上面是地址
谢谢

本回答被网友采纳

两个表,根据条件批量更新其中一个表的某一列数据。(高分求救,在线等待...
批量更新的语法是这样 update a表 set a.filed=(select field from b表 where b.关联字段=c.关联字段) from b表, c表 where b.关联字段=c.关联字段 and 其他条件 欢迎你加入.NET俱乐部QQ群:2613338

sql可以两个表一起更新数据吗
如果两个表有关联的话是可以的,比如A表的id和b表的b_id外键关系就可以 update a left join b on a.id = b.b_id set a.name = '',b.name='' (where条件)

SQL中如何批量更新表中的记录
第一步,打开数据表,例如,要在表中找到数据1,见下图,转到下面的步骤。第二步,完成上述步骤后,单击“newquery”选项,见下图,转到下面的步骤。update[表名]set[字段名]=[值];如果是根据一个表更新此表,套用如下方式:update[表名]set[字段名]=(select[字段名]from[其他表]where[两表间的...

sql中怎么批量更新列的数据
update products set sell=(select sell from table2 where sn='aa') where sn='aa';既然你能确定SN是唯一的,那就可以用上边这个。你更新数据,这样应该有两个表吧。一个表就直接update products set sell=‘aa'

两个关联表根据一个表的值批量更新另一个表的值的sql语句怎么
update b set b.text=a.No from (select id,max(no) No from a group by a) a inner join b on a.id=b.id

SQL批量更新数据(mysql批量更新数据)
SQL批量更新共有以下四种办法 1使用replace into 批量更新。2、编写代码使用insert into 和on duplicate key update批量更新。3、创建临时表,先更新临时表,然后从临时表中update,这种方法需要用户有temporary 表的create 权限。4、使用SQL自带的语句构建批量更新。

access 中如何实现两个数据表比较后批量更新其中一张表
' 先添加3个字段 CurrentDb.Execute "ALTER TABLE 表B ADD COLUMN 姓名 TEXT;"CurrentDb.Execute "ALTER TABLE 表B ADD COLUMN 性别 TEXT;"CurrentDb.Execute "ALTER TABLE 表B ADD COLUMN 学历 TEXT;"' 然后更新查询 CurrentDb.Execute "UPDATE 表B LEFT JOIN 表A ON 表B.身份证号 = 表A....

...怎么写sql同时更新多个id的字段值,比如 id为1和2,怎么同时更新它们的...
一个id的这样更新:update 表 set 字段1=新值,字段2=新值 where id=1 多个id的建议excel里做好,导入到DB中成为新表,再关联这2张表批量更新:update 表1 set 字段1=b.新值,字段2=b.新值 from 表1 a, 表2 b where a.id=b.id ...

SQL如何批量更新数据
如果更新的内容是一样的直接写一个sql语句全部更新掉就好了 比如:update 表名 set 更新字段1='需要被更新成的值',更新字段2='需要被更新成的值' where 更新的过滤条件 总体的语法是关键字update 表名 set 更新的字段名='更新内容',...如果多个字段可以使用逗号分隔。更新的关键是找到更新内容的...

在oracle中如何批量更新一列记录
什么叫批量更新一列记录? 是要一次性更新多条记录么,如果是这样的话只能逐条去些UPDATE语句。不过可以把需要更新的所有数据全部存到excel表格里,然后用CONCATENATE函数去写SQL语句

相似回答