دست نوشته های خودم

همه درددلها ، حرفها و یادداشتهای خودم …

به روز رسانی ترتیب وار در MySQL

نویسنده:
۳۱ تیر ۹۱

چند هفته ای به علت درگیری های بعد از ازدواج نتونستم درست به وبلاگ سر بزنم و شرمنده دوستانی که کامنت گذاشته بودند شدم.

امروز یک کواری رو نوشتم که بهانه خوبی برای به روز رسانی وبلاگ شد. قضیه از این قرار بود که ، در عین ناباوری دیدم که در یکی از جدولهای پر رکورد دیتابیس سایت ، فیلد آی دی از حالت اتواینکریمنت بیرون رفته ، و در نتیجه حدود ۳۰۰ هزار رکورد ، با آی دی صفر ذخیره شده اند. در نتیجه تصمیم گرفتم که به نحوی مقادیر رو به روز رسانی کنم.

اولین کار این بود که شناسه آخرین رکورد ( بر اساس فیلد تاریخ) را به دست آوردم و سپس کلیه رکوردهایی که شناسه با مقدار صفر داشتند رو لیست کردم. حالا باید با یک کواری (بدون حلقه for یا …) رکوردهای با مقادیر شناسه ۰ رو یکی یکی به روز رسانی میکردم. یعنی مقدار آخرین شناسه ای که به دست آورده بودم رو برای هر رکورد ، یک به یک اضافه میکردم.

//متغیری که قرار است مرتبا افزایش یابد و مقدارش در فیلد آی دی قرار بگیرد

SET @StartValue = 209111  ;//variable

//دستور کواری که مقدار فیلد آی دی را به روز خواهد کرد

UPDATE mytable SET id = @StartValue:=@StartValue+1 WHERE  recdate > ‘2011-09-30’; // update query

نکته اینکه : شرطی که ما قرار داده ایم برای این است که  آی دی های رکوردهای قبلی خراب نشود.

حال برای یک جدول که فیلد آی دی همه رکوردهای آن صفر می باشد ، کد زیر را اجرا میکنیم :

SET @StartValue = 1;//variable

UPDATE mytable SET id = @StartValue:=@StartValue+1 ‘;//update query

Facebooktwittergoogle_pluslinkedinmail

         برنامه نویسی , کامپیوتر

         , , ,