آرمین امیری نسب
4 سال پیش توسط آرمین امیری نسب مطرح شد
7 پاسخ

مرتب سازی ID در MySQL

دوستان میخوام بعد از حذف یک row از دیتابیس تمام ID ها دوباره مرتب سازی بشن مثلا جدول ما به این شکل هست:

ID | Name | Email
1 
2
3
4
5

حالا اگه ما row 3 رو حذف کنیم جدول ما به این شکل درمیاد:

ID | Name | Email
1 
2
4
5

اما من میخوام این ID ها دوباره مرتب سازی بشن و به حالت قبل برگردند می دونم امکان نداره ولی باز شما اگه راهی میبینید بهم بگید ممنون 👍
.
.
.
.
.
@mhyeganeh @ali.bayat @mohsenbostan @hesammousavi @khosravi424 @MehdiAghighi @milad @TimeRunner2359 @hosseinshirinegad98 @khanzadimahdi @mobinghasemi1485


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
0

سلام امکان داره ولی این کار توصیه نمی‌شه چون اگه این آیدی‌ها در جدول دیگری کلید خارجی داشته باشن که در ادامه مرتب سازی این آیدی‌ها شما باید کلیدهای خارجی رو عوض کنید.قبلا یه راهی رو در اینترنت دیده بودم سایتش لیداوب بود به خاطر همین مسئله کلید خارجی پیگیری نکردم


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@arminamirinasab
سلام.
ببینید ID همون طور که از اسمش پیداست، شناسه هستش نه عددی برای مرتب شدن و مرتب کردن. کاری که میخواید انجام بدید مثل این میمونه که بگید هر شخصی که مرد، کد ملی های بقیه رو دوباره مرتب کنید.


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

فیلد ID معمولا auto incremental هست و خودش تک‌تک میره بالا
در برنامه تون بهتره به این فیلد به عنوان یک Identifier نگاه کنید که مشخص میکنه هر رکورد کجا قرار گرفته
و اتکایی روی این شماره نکنید.
دوستمون هم اشاره کرد.. کلید های خارجی اگر وجود داشته باشه با این قضیه تداخل میکنه


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 4 سال پیش مطرح شد
0

اینکار نه تنها از لحاظ کلید خارجی بودن مشکل داره (دوستان اشاره کردن) بلکه از لحاظ پرفورمنس خیلی خیلی مشکل داره.

فرض کن 1000 تا رکورد داری بعدش رکورد شماره 1 رو حذف میکنی! اونوقت باید 999 تا رکورد بعدی اپدیت بشن! حالا اگه رکوردها بیشتر باشن خودت در نظر بگیر چه اتفاقی میتونه بیوفته.

بهترین حالتش اینه که یه جدول دیگه در نظر بگیری واسه رکوردهایی که حذف میشن و ایدیشون رو اونجا بزاری و بعدش از اخرین رکورد دونه دونه اپدیت کنی و ایدیشون رو به ایدی هایی که حذف شده تغییر بدی. اینکار هم بهتره با صف انجام بشه.


آرمین امیری نسب
تخصص : برنامه نویس فرانت اند
@arminamirinasab 4 سال پیش مطرح شد
0

من تازه کار با PHP شروع کردم میخوام یک بخش آخرین مطالب بزارم بعد بیام ۴ تا از آخرین آیدی ها رو بردارم ولی این راه درستی نیست فکر می کنم راه بهتری هم وجود داشته باشه شما هم پیشنهادتون بگید
.
.
.
.
.
@hosseinshirinegad98 @mohsenbostan @ali.bayat


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 4 سال پیش مطرح شد
0

@arminamirinasab
ID نیاز نیست شما می تونید با تاریخ کار کنید. یعنی یک فیلد برای تاریخ ثبت برای مثال به اسم created_at ایجاد میکنید و زمان ثبت شدن اون مطلب رو اونجا قرار میدید. بعد بر اساس اون تاریخ میتونید 4 تای آخر رو ددریافت کنید.


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
0

یا می‌تونید از دستور زیر استفاده کنید

SELECT * FROM Customers
ORDER BY id DESC LIMIT 4

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام