PDA

View Full Version : ایجاد عدد خود کار در آبدیت کردن جدول



Helpco
شنبه 05 آبان 1397, 09:58 صبح
سلام چطوری میشه یک فیلد که از نوع intهست را با دستور UPDATE کنیم که اعداد از یک شروع بشه
این فیلد کلید اصلی نمی باشد میخوام که اعداد را مرتب کنم چون اعدادم بهم ریخته می باشد و این فیلد فقط چهت نمایش می باشد که باید اعداد ان مرتب باشد

Mahmoud.Afrad
شنبه 05 آبان 1397, 17:08 عصر
اگر فقط برای نمایش هست چیزی شبیه شماره ردیف، در اینصورت اصلا نیازی به این ستون نیست..

Helpco
یک شنبه 06 آبان 1397, 07:43 صبح
نه مخوام یک مقدار یک فیلد آبدیت کنم و مقدار اون از یک شرو کنم تا هر چقدر هست

Helpco
دوشنبه 07 آبان 1397, 14:50 عصر
up...up...

Mahmoud.Afrad
سه شنبه 08 آبان 1397, 18:09 عصر
به نظر من که نیازی به این ستون نیست
UPDATE [Table]
SET Radif = Row#
FROM [Table]
join
(SELECT
ROW_NUMBER() OVER(ORDER BY Radif ASC) AS Row#,
Radif
FROM [Table]) t
ON [Table].Radif = t.Radif
Radif نام ستون اعداد

Helpco
چهارشنبه 09 آبان 1397, 10:30 صبح
به نظر من که نیازی به این ستون نیست
UPDATE [Table]
SET Radif = Row#
FROM [Table]
join
(SELECT
ROW_NUMBER() OVER(ORDER BY Radif ASC) AS Row#,
Radif
FROM [Table]) t
ON [Table].Radif = t.Radif
Radif نام ستون اعداد

استاد عزیز ببنید من یک ستون دارم که یک شماره برای هر نفر بر حسب گروه ذخیر میشه که فقط جنت نمایشی داره ولی باید بترتیب باشه حلا این وسط یک شماره حذف میشه خوب باید اعداد دوباره مرتب و داخل دیتا بیس ذخیره بشه

Helpco
چهارشنبه 07 آذر 1397, 09:38 صبح
up...up...

Mahmoud.Afrad
چهارشنبه 07 آذر 1397, 20:58 عصر
کد را تست کردید؟

hamid_hr
شنبه 10 آذر 1397, 08:06 صبح
استاد عزیز ببنید من یک ستون دارم که یک شماره برای هر نفر بر حسب گروه ذخیر میشه که فقط جنت نمایشی داره ولی باید بترتیب باشه حلا این وسط یک شماره حذف میشه خوب باید اعداد دوباره مرتب و داخل دیتا بیس ذخیره بشه
شما میتونی با یک فیلد از نوع int که گزینه identity آن فعال است این کار رو انجام بدی ولی مشکلش همینجاست که اگه یک فیلد حذف بشه اون فیلد رو نمیتونی آپدیت کنی. الیته راه هست ولی خیلی فشار روی سرور دیتابیس میاد، فک کنید یک میلیون رکورد دارین و در روز تعداد صد هزار حذف و چند صد هزار اضافه کردن دارید به ازای حذفیات باید دوباره همه رو محاسبه کنه و ذخیره کنه که عملا فشار زیادی روی سرور میاد.
این کوئری که براتون نوشتن بهترین راه حل می باشد

Helpco
یک شنبه 11 آذر 1397, 10:36 صبح
من نمتونم فیلید را نمی تونم از نوع
identity قرار بردم چون تکراری باید بگیر براساس گروه های مختلف
ولی در هر گروه باید اعداد از یک شروع بشه والان انیطور هم هست ولی ممکن دو گروه باهم ترکیب بشن پس باید اعداد دو بار مرتب و از یک بشن
اعین عداد مهم نیست و فقط جهت نمایش ولی مرتب بودن اون مهم

Mahmoud.Afrad
یک شنبه 11 آذر 1397, 19:54 عصر
من نمتونم فیلید را نمی تونم از نوع
identity قرار بردم چون تکراری باید بگیر براساس گروه های مختلف
ولی در هر گروه باید اعداد از یک شروع بشه والان انیطور هم هست ولی ممکن دو گروه باهم ترکیب بشن پس باید اعداد دو بار مرتب و از یک بشن
اعین عداد مهم نیست و فقط جهت نمایش ولی مرتب بودن اون مهم


https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-2017