راکت

مرتب سازی 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
@hosseinshirinegad986 سال پیشمطرح شد
0

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


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

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


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

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


mahdi khanzadi
mahdi khanzadi
تخصص :Software engineer
@khanzadimahdi6 سال پیشمطرح شد
0

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

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

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


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

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


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

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


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

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

SELECT * FROM Customers
ORDER BY id DESC LIMIT 4

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

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