نمایش نتایج 1 تا 11 از 11

نام تاپیک: حذف رکورد های تکراری

  1. #1

    حذف رکورد های تکراری

    سلام ;
    توی یکی از جداول ،تعدادی از رکورد هامون کاملا تکراری هستند(محتویات همه فیلد هاشون برابر است) چطور میشه این موارد را شتاسایی کرد و موارد تکراری را پاک کرد

  2. #2
    کاربر جدید
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    زنجان
    سن
    36
    پست
    2

    نقل قول: حذف رکورد های تکراری

    شما می توانید با دستور distict بعد از select استفاده کنید که رکودهای تکراری را نشان نمی دهد.

  3. #3

    نقل قول: حذف رکورد های تکراری

    https://barnamenevis.org/showpo...92&postcount=3

    با روشهای متنوع و متعددی می تونید این کار را انجام بدید. مقاله ی بالا را نگاه کنید.

    اگر از نسخه ی 2005 و بالاتر استفاده می کنید با تابع row_number و cte اینکار به سادگی قابل انجام است.

  4. #4

    نقل قول: حذف رکورد های تکراری

    ببین دوست من فرض می کنیم که جدول شما یه فیلد داره که این فیلد unique هست (منحصر به فرد) و اسم اون مثلاً Name حالا شما این کد رو بنویس.
    select name,count(name) from MyTable group by name having count(name)>1
    این کد فیلدهای تکراری رو بهت می ده
    اگه بازم مشکل داری یه بک آپ از دیتابیست بفرست تا کد کاملو بدم بهت

  5. #5

    نقل قول: حذف رکورد های تکراری

    نقل قول نوشته شده توسط taheri-ali مشاهده تاپیک
    ببین دوست من فرض می کنیم که جدول شما یه فیلد داره که این فیلد unique هست (منحصر به فرد) و اسم اون مثلاً Name حالا شما این کد رو بنویس.
    select name,count(name) from MyTable group by name having count(name)>1
    این کد فیلدهای تکراری رو بهت می ده
    اگه بازم مشکل داری یه بک آپ از دیتابیست بفرست تا کد کاملو بدم بهت
    سلام،
    مشکل پیدا کردن داده های تکراری نیست، مساله حذف آن داده هاست.

  6. #6

    نقل قول: حذف رکورد های تکراری

    نقل قول نوشته شده توسط msalim مشاهده تاپیک
    سلام،
    مشکل پیدا کردن داده های تکراری نیست، مساله حذف آن داده هاست.



    دوست عزیزمون msalim درست میگه پیدا کردنشون راحته با یک گروپ بای از تمام فیلد ها و یک count مشخض میشه که کدوم تکراریه اما مهم اینه که تکراری ها پاک بشه و یک نسخه از آن بماند.من به یه جاهایی رسیدم به این صورت که ابتدا یک فیلد شمارنده(id) به جدول اضافی می کنیم و فرض می کنیم جدولمون دو فیلد sname وfamily داره

    deletefrom x
    where id notin(selectmax(id)
    from x
    groupby sname,family)

  7. #7

    نقل قول: حذف رکورد های تکراری

    چطوری id را به سطرها دادین. یعنی سطرهای تکراری را گروه بندی کردین و به هر سطر یک id از شماره 1 تا n برای n امین سطر دادین؟

    اگر اینطور باشه کافیه دستور delete به شکل زیر در بیاد:


    delete from x
    where id > 1

    ولی من دقیق متوجه ستون id که دادین نشدم ولی به نظر می رسه کوئری که پست کردین درست باشه

    Edit:
    کوئری که پست کردین کاملا درست است منتهی من id را با rank اشتباه گرفتم!
    آخرین ویرایش به وسیله محمد سلیم آبادی : شنبه 17 بهمن 1388 در 18:39 عصر

  8. #8

    نقل قول: حذف رکورد های تکراری

    یک نکته مهم
    دستور حذف فوق کلیه اطلاعات تکراری را حذف میکند بدون اینکه اثری از یکی از انها باقی بگذارد

    اگر میخواهید از رکوردهای تکراری یکی بماند
    ایتدا دستور زیر را اجرا کنید
    Alter table X add RmvTag int Identity

    سپس


    Delete
    FROM X
    WHERE (RmvTag IN
    (SELECT MAX(RmvTag)
    FROM X
    GROUP BY Name,Family
    HAVING (COUNT(*) > 1)))

  9. #9

    نقل قول: حذف رکورد های تکراری

    نقل قول نوشته شده توسط JavanSoft مشاهده تاپیک
    یک نکته مهم
    دستور حذف فوق کلیه اطلاعات تکراری را حذف میکند بدون اینکه اثری از یکی از انها باقی بگذارد

    اگر میخواهید از رکوردهای تکراری یکی بماند
    ایتدا دستور زیر را اجرا کنید
    Alter table X add RmvTag int Identity

    کدی که شما نوشتید تنها زمانی قابل استفاده است که حد اکثر یک نمونه داده ی تکراری داشته باشیم چون هنگامی سطر پاک میشه که Tag آن برابر با max آن گروه باشه. پس اگر n تا رکورد تکراری از یک نمونه داشته باشیم تنها یک نمونه آن (یعنی Tag=max) حذف میشه.

    ولی این کد:

    delete from @t
    where i not in
    (select max(i) -- or MIN
    from @t
    group by name,family)


    و این کد:

    DELETE FROM @t
    FROM @t t1
    WHERE EXISTS
    (SELECT *
    FROM @t t2
    where t1.name = t2.name
    and t1.family = t2.family
    and t1.i > t2.i)


    کاملا درست عمل می کنند.

  10. #10

    نقل قول: حذف رکورد های تکراری

    حق با شماست
    من به اين نكته دقت نكرده بودم
    آيا بدون حلقه هم ميتوان اينكار را انجام داد ؟

  11. #11

    نقل قول: حذف رکورد های تکراری

    آیا بدون حلقه هم میتوان اینکار را انجام داد ؟
    دو query که در پست شماره ی 9 وجود دارند بدون استفاده از حلقه عمل می کنند. لینک موجود در پست 3 همین تاپیک رو دنبال کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •