PDA

View Full Version : حذف رکورهای تکراری



ahmadflasher
دوشنبه 18 دی 1391, 21:18 عصر
سلام. من یه جدول دارم مثل جدول زیر که یه سری داده ها تو یه فیلد خاص تکراریه،چه جوری میشه این رکوردهایی که توش یه فیلد خاص تکراریه رو حذف کرد.


+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+

SilverLearn
دوشنبه 18 دی 1391, 21:50 عصر
سلام دوست عزیز
از این کد استفاده کن



SELECT DISTINCT column_name(s)
FROM table_name

ahmadflasher
دوشنبه 18 دی 1391, 22:15 عصر
سلام دوست عزیز
از این کد استفاده کن



SELECT DISTINCT column_name(s)
FROM table_name


منظورم حذف یکی رکوردهای تکراری بود نه اینکه تکراریها رو نمایش ندم. میخوام رکورد تکراری حذف بشه و فقط یکی باقی بمونه.

rezaonline.net
سه شنبه 19 دی 1391, 05:59 صبح
سلام
این دستور تکراری ها رو با تعداد تکرارشون برمیگردونه

select name , count(name) as _count from test group by name having _count >1
الان برای مثال شما برمیگردونه

name | _count
google 3
yahoo 2
حالا میتونی توی یه حلقه بذاری که براساس تعداد تکرارها یه دونه کمتر رو حذف کنه
مثلا گوگل رو 2 تا
یاهو رو یکی

delete from test where name='google' limit 2
delete from test where name='yahoo' limit 1

البته راه حل اساسی اینه وقتی واقعا فیلدی نیاز نداره رکورد تکراری داشته باشه اونو unique بذارید تا رکورد تکراری ثبت نشه .