View Full Version : آپدیت رکورد N ام
Payman62
یک شنبه 01 خرداد 1390, 14:00 عصر
سلام.
یه تیبل دارم که همه مقادیر یه فیلدش ناله. حالا میخوام یه حلقه بذارم و از فیلد اول تا آخر رو دونه دونه مقدار بدم.
تو حلقه هر دفعه باید بگم رکورد N ام رو فلان مقدار بده.
با دستور ROW_NUMBER که تو sql 2005 اضافه شده یه کارایی کردم. میتونم فیلد N ام رو سلکت کنم. اما هنگام آپدیت با این که شرط میذارم که ROW_NUMBER برابر N باشه اما باز همه رکورد ها آپدیت میشه.
کسی راهی به ذهنش میرسه؟
یوسف زالی
یک شنبه 01 خرداد 1390, 14:37 عصر
این رو امتحان کنید:
update TBL
set Field =
(select count(1)+1 from TBL A where A.ID < TBL.ID)
یوسف زالی
یک شنبه 01 خرداد 1390, 14:37 عصر
البته مشروط به اینه که ID شما Identity باشه.
Payman62
دوشنبه 02 خرداد 1390, 02:22 صبح
سلام.
کلید اصلی داشت که مشکلی نداشتم. به دلایلی اصلا تیبلش کلید اصلی نداره.
Payman62
چهارشنبه 04 خرداد 1390, 11:58 صبح
سلام.
چی شد پس؟
یوسف زالی
چهارشنبه 04 خرداد 1390, 13:14 عصر
این هم کد شما:
declare @t table(SN intnull)
insert into @t
values (null),(null),(null),(null),(null),(null),(null),( null),(null),(null),(null),(null),(null),(null),(n ull),(null),(null),(null)
while @@ROWCOUNT<> 0
update top (1) @t
set SN =isnull((select MAX(SN) from @t), 0)+1
where SN is null
select *
from @t
اگه برات سرعت مهم نیست از کرسر هم میتونی استفاده کنی.
behrouzlo
چهارشنبه 04 خرداد 1390, 13:40 عصر
اگر از نسخه 2005 یا به بالا استفاده می کنید به صورت زیر می توانید عمل کنید:
Declare @N Int = 5;
With Tbl As ( Select *,Row_number() Over (order By Id) As Rows From Tbl1 )
Update Tbl Set Id = Id + 1 Where Rows = @N
Payman62
چهارشنبه 04 خرداد 1390, 20:18 عصر
اگر از نسخه 2005 یا به بالا استفاده می کنید به صورت زیر می توانید عمل کنید:
Declare @N Int = 5;
With Tbl As ( Select *,Row_number() Over (order By Id) As Rows From Tbl1 )
Update Tbl Set Id = Id + 1 Where Rows = @N
سلام.
ممنونم. کد شما با کمی تغییر جواب داد. به این صورت:
Declare @N Int
set @N = (select count(*) from Tbl1);
with Tbl (Field1,RowNum) As
(Select Field1,Row_number() Over (order By Field1) As RowNum From Tbl1)
Update Tbl Set Field1 = RowNum Where RowNum <= @N
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.