⑴ sql怎么向其它表循环更新数据
可以使用一种非游标的方式实现。
1. 先用row_number函数将A、B表的每行都分配一个从0开始的序号。并且,计算出B表的总行数。
select 姓名, row_number() over (order by 姓名) - 1 as seq
from A表;
select 性别, row_number() over (order by 性别) - 1 as seq, count(*) over() as total_rows
from B表;
2. 将两个查询连接起来,分组。
select a.姓名, b.性别
from
(select 姓名, row_number() over (order by 姓名) - 1 as seq
from A表) as A,
(select 性别, row_number() over (order by 性别) - 1 as seq, count(*) over() as total_rows
from B表) as B
where a.seq % b.total_rows = b.seq
3. 用查询结果更新原来的表。为了可读性,将查询放到一个CTE里。
with cte_new
as
(
select a.姓名, b.性别
from
(select 姓名, row_number() over (order by 姓名) - 1 as seq
from A表) as A,
(select 性别, row_number() over (order by 性别) - 1 as seq, count(*) over() as total_rows
from B表) as B
where a.seq % b.total_rows = b.seq
)
update A表 set 性别 = c.性别
from A表 as a, cte_new as c
where a.姓名 = c.姓名;
⑵ SQL中如何批量更新表中的记录
这样就可以了:
update prodbasic set pcs_area= round(pcs_area,4)
我的语句确实是四舍五入后保留了小数点后的四位,但是你存入原来的字段就不对了,因为原来的字段小数点后面不止四位,程序会字段添加些0在后面。
告诉你正确的方法:
一、给表增加一个字段,比如pcs_area2 decimal(9,4)
二、执行语句update prodbasic set pcs_area2=pcs_area能自动进行四舍五入转换
三、删除表中字段pcs_area
四、修改pcs_area2的字段名为pcs_area
⑶ SQL如何批量更新数据
您好,可先将需要正确的更新的内容导入到另一张表中,通过另一张表的数据与原始的表数据的关联关系进行批量更新。如此多列都可进行批量更新。
⑷ 我有多条sql的更新语句,怎么用一个循环语句执行一次更新整一张数据表的数据
1、首先,使用Navicat for MySQL连接数据库并创建一个数据库。
⑸ sql中怎么update整个表
假如表1有两个字段 字段1和字段2,将表一所有字段内容更新为1
update 表1 set 字段1=1,字段2=1;
⑹ 如何在pl/sql中,对全表进行更新
update A SET a=nvl(a,0),b=nvl(b,0) c=nvl(c,0)
or
select nvl(a,0) a, nvl(b,0) b, nvl(c,0) c from A
⑺ sql server2000 如何向表中逐条更新某一列的值,各行值通过随机数产生
表中逐条更新:
1:先对表中所有的数据增加一个ID号放到一个临时表
select indentity(1,1) as id ,* into #a from 表
2:循环更新每条数据
declare @total int,@tot int
select @total=count(*)from #a
set @tot=1
WHILE @tot<=@total+1
begin
update 表 set 字段= cast(100*rand()as int)----随即一个两位的整数
from 表 t1,
#a t2
where t1.字段=t2.字段
and t2.id=@tot
set @tot=@tot+1
end
⑻ 怎么在SQL里逐行修改数据
直接用一个UPDATE语句就可以实现更新。
UPDATE TEST SET ME = 0 WHERE ME IS NULL
当ME字段是空时,更新为0,不知道ME是什么类型,这么写是数字的0
或者,使用CASE WHEN更能体现你的意图
UPDATE TEST SET ME = (CASE WHEN ME IS NULL THEN 0 ELSE ME END)
逐行更新,当ME是空,更新成0,否则保持不变
你那么写没必要,首先,你更新ME,首先这个ME在本行就是可以使用的,也就是你减法的后一半SQL,使用ME就可以了。还有,你的TEST2只有一行数据么?如果不止一行,那么你减法的第一个被减数的SQL,返回的结果就不唯一了,那么这个语句一定是错误的。
TEST2和TEST有没有关联条件?就是直接减么?没有TEST2哪一行减掉TEST1哪一行?
UPDATE TEST SET ME = ((SELECT WE FROM TEST2 where条件) - ISNULL(ME,0))
这样是可以的,注意一下ISNULL(ME,0),这个是SQLSERVER的语法,表示如果ME字段是空,给一个默认值是0.否则空做减法会出问题,结果就不对了。
⑼ SQL怎么更新整行数据
update语句基本使用方法是更新一个字段,如果要更新整行,就需要明确指定所有的列来操作,各字段由逗号隔开即可
写法为:
update table set col1=x,col2=y,col2=z where id=123
另注,如果不是要更新所有数据行,一定要指定where条件