PDA

View Full Version : سوال: حذف ركورهاي اضافي از بانك



afsharjowkar
چهارشنبه 19 تیر 1392, 21:52 عصر
درود

يه ديتابيس دارم كه حول و حوش 60 هزار تا ركورد توي يكي از جدول ها هست يه فيلد دارم به اسم name مشكلي كه دارم اينه كه بعضي از اين name ها اسامي مشابه دارن و ميخوام بر اساس تاريخشون پاك بشن يعني هر كدوم قديمي تره بمونه و جديدا پاك بشن الان موندم چجوري اسكريپتش رو بنويسم ،‌چيزي كه توي ذهن خودمه اينه كه بيام مثلا اول ركورد اول رو بخونم با كل ركوردها مقايسه كنم اگر مشابهي داشت بريزمش توي آرايه كه فكر كنم اينجوري ديتابيس منفجر بشه ...ممنون ميشم راهنمايي كنيد

noroozifar
چهارشنبه 19 تیر 1392, 22:40 عصر
یک راه حل که به نظر من میرسه اینه:
یک دستور select بزنی روی کل جدول و تمامی رکوردها را انتخاب کنی ( جدول شماره یک ) و بعد یک دستور select دیگر دوباره بر روی همان جدول بزنی اینبار از SELECT DISTINCT استفاده کن تا رکوردهای تکراری نمایش داده نشوند (جدول شماره 2 بدون رکورد تکراری ) حالا شما دوتا جدول داری یکی همه رکوردها هستند یعنی هم تکراری و هم رکوردهای اصلی و یک جدول داری هیچ رکورد تکراری نداره حالا میان این دوتا جدول یک join میزنی به طوریکه از جدول اول رکوردهای را انتخاب کنه که در جدول دوم نباشند ( منظور جدولی هستش که رکورد تکراری ندارد ) و یک شرط هم میگذاری که تاریخ انها مثلا فلان روز باشد با انجام اینکار شما الان کل رکوردهای تکراری را مشخص کردید حالا همه را حذف میکنید :لبخند:

امیدوارم متوجه شده باشی خیلی راحت هستش

afsharjowkar
چهارشنبه 19 تیر 1392, 23:05 عصر
SELECT DISTINCT از كجا ميفهمه كه كدوماش تكراري هست ، آخه فقط اين فيلد name ممكنه تكراري باشه بقيه فيلدها ي ركورد تكراري نيست

afsharjowkar
پنج شنبه 20 تیر 1392, 14:38 عصر
با اين روش تونستم پاك كنم

DELETE p1 FROM Post p1, Post p2 WHERE p1.postdate > p2.postdate AND p1.title = p2.title
البته الان مشكلي كه دارم اينه كه يه جدول ديگه هم مرتبط با اين هست كه با استفاده از id با هم در ارتباط هستند ميخوام ركوردهاي اون جدول كه با ركوردهاي جدول جاري در ارتباط هست هم با همين كوئري پاك كنم ؟ كسي ميدونه چجوري؟

mahmod2000
پنج شنبه 20 تیر 1392, 14:43 عصر
اگه میگید ID ها مرتبط هستن با هم در اون یکی جدول میتونید JOIN کنید و پاک کنید

afsharjowkar
پنج شنبه 20 تیر 1392, 14:46 عصر
اگه میگید ID ها مرتبط هستن با هم در اون یکی جدول میتونید JOIN کنید و پاک کنید

مشكلم الان همين نحوه join كردن با اين روشي هست كه نوشتم

afsharjowkar
پنج شنبه 20 تیر 1392, 23:14 عصر
كسي نبود ج بده