⑴ 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條件