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

نام تاپیک: حذف رکورد های تکراری بر اساس فقط یک فیلد

  1. #1

    Question حذف رکورد های تکراری بر اساس فقط یک فیلد

    با عرض سلام خدمت اساتید گرامی

    من یک جدول دارم و می خوام ازش یک کوئری بگیرم به این شکل که رکورد های تکراری رو حذف کنه (منظورم از حذف اینه که فقط یک نمونه از اوهنها بیاره) . منظورم از رکورد تکراری ، رکوردی هست که فقط یک فیلد از اونها تکراری باشه و نه همه فیلد ها . می خوام از کل سطر هایی که اون فیلدشون تکراریه فقط یک نمونه بیاره و مهم هم نیست کدومش باشه .
    مثلا ساختاری جدول زیر رو در نظر بگیرید


    1 12345 0 0 5
    2 123456 0 1 4
    3 12345 5 2 4
    4 12345 0 3 0
    5 12345 2 0 5

    می خوام کل فیلد ها رو داشته باشم . مثلا اگه رکورد دوم اسمش lnumber باشه . می خوام از هر کدوم اون تو بانک فقط یکی بیاره به این شکل :

    1 12345 0 0 5
    2 123456 0 1 4


    ممنون میشم راهنماییم کنید


  2. #2

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

    اصلا مثال خوبي نبود! هيچيش معلوم نيست.
    براي حذف تكراري ها از distinct استفاده كن.

  3. #3

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

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    اصلا مثال خوبي نبود! هيچيش معلوم نيست.
    براي حذف تكراري ها از distinct استفاده كن.
    distinct رو میدونم . اما دقت نکردید من چی گفتم . distinct میاد تکراری بودن رو بر اساس تمام فیلد ها در نظر میگیره . یعنی اگه تمام فیلد ها یکسان بودن اونارو حذف می کنه
    ولی من می خوام که بر اساس یک فیلد در نظر بگیره . اگه اون تکراری بود فقط یک نمونشه بیاره

  4. #4
    کاربر دائمی آواتار asadegha
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    اینجا، همه جا، هیچ جا، چه فرقی داره؟
    پست
    274

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

    شما از همون distinct استفاده کن. فقط بجای اینکه موقع select کردن * بزاری و همه فیلدها رو انتخاب کنی، فقط همون فیلدی رو انتخاب کن که میخوای تکراری نباشه. یعنی اینطوری:

    SELECT DISTINCT lnumber FROM Table1

  5. #5

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

    نقل قول نوشته شده توسط majidrezaei2007 مشاهده تاپیک
    distinct رو میدونم . اما دقت نکردید من چی گفتم . distinct میاد تکراری بودن رو بر اساس تمام فیلد ها در نظر میگیره . یعنی اگه تمام فیلد ها یکسان بودن اونارو حذف می کنه
    ولی من می خوام که بر اساس یک فیلد در نظر بگیره . اگه اون تکراری بود فقط یک نمونشه بیاره
    اينجوري كه نميشه عزيز من! فرض كن به sql گفتي از ده تا ركوردي كه نامش علي هست و 10 تا فيلد متفائت ديگه داره بهش ميگي يكي از علي ها رو نشون بده .خب اون بايد كدوم نمونه اش رو نشون بده؟كاري كه ميتوني بكني اينكه بر اساس يه ستون distinct كني و يك ستون ديگه هم داشته باشي كه كليد اصلي اون نام باشه و از بقيه select نگيري. حالا ميتوني بقيش رو join بزني با جدول اصليت توسط همون كليد اصلي كه گفتم يا خودت بصورت دستي اون فيلدهايي كه ميخواي بعد از select و distinct بياري.
    جدولهاتو بذار و بگو دقيقا چي ميخواي تا راهنماييت كنم.

  6. #6

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

    با توجه به اینکه به بحث ادامه دادید

    برای این منظور کوئری زیر پاسخ شماست
    سلکت با distinct فقط روی یک ستون
    select-distinct-on-one-column

    SELECT *
    FROM (SELECT * , ROW_NUMBER()
    OVER (PARTITION BY [SpecificColumnForDistinct] ORDER BY [ColumnForOrderBy]) AS RowID
    FROM [Table_Name]
    ) AS dt
    WHERE dt.RowID = 1

    به جای SpecificColumnForDistinct نام فیلدی رو بنویسید که میخواهید تکراری نباشه
    به جای ColumnForOrderBy هم نام فیلدی را برای مرتب کردن باید بنویسید
    به جای Table_Name هم نام جدول را قرار بده.
    اون عدد 1 رو هم اصلا دست نزنید.
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 18 مرداد 1391 در 11:11 صبح

  7. #7

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

    خب ساختار جدول من اینطوریه .
    این جدول مربوط به دروس هست . در رشته های مختلف نام بعضی از درس ها فرق می کنه .
    مثلا برنامه سازی پیشرفته و برنامه سازی 2
    این 2 درس دقیقا یکی هستند و شماره درسشون هم بعضا یکیه
    حالا من می خوام که روز و ساعت امتحان این درس رو بیرون بکشم که خب مسلما برای تمامی رشته های یک دانشگاه ، این درس در یک روز و ساعت برگزار میشه .
    select من می خواستم اینطوری باشه که از اون شماره درس فقط یک نمونشو بیاره و اصلا به موارد دیگش مانند عنوان درس و روز و ساعت تشکیل و ... توجه نکنه

    که با تشکر فراوان از دوست خوبم mafaman2003 به نتیجه رسیدم
    از بقیه دوستان هم تشکر می کنم

  8. #8

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

    نقل قول نوشته شده توسط asadegha مشاهده تاپیک
    شما از همون distinct استفاده کن. فقط بجای اینکه موقع select کردن * بزاری و همه فیلدها رو انتخاب کنی، فقط همون فیلدی رو انتخاب کن که میخوای تکراری نباشه. یعنی اینطوری:

    SELECT DISTINCT lnumber FROM Table1
    از این روش نمیشه ، چون به تمام فیلد های جدول نیاز دارم

  9. #9

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

    نقل قول نوشته شده توسط ali_habibi1384 مشاهده تاپیک
    اينجوري كه نميشه عزيز من! فرض كن به sql گفتي از ده تا ركوردي كه نامش علي هست و 10 تا فيلد متفائت ديگه داره بهش ميگي يكي از علي ها رو نشون بده .خب اون بايد كدوم نمونه اش رو نشون بده؟كاري كه ميتوني بكني اينكه بر اساس يه ستون distinct كني و يك ستون ديگه هم داشته باشي كه كليد اصلي اون نام باشه و از بقيه select نگيري. حالا ميتوني بقيش رو join بزني با جدول اصليت توسط همون كليد اصلي كه گفتم يا خودت بصورت دستي اون فيلدهايي كه ميخواي بعد از select و distinct بياري.
    جدولهاتو بذار و بگو دقيقا چي ميخواي تا راهنماييت كنم.
    از این روش هم نمیشه ، چون distinct در صورتی که تمام فیلد های جلوش یکی باشن . فیلد نام یکی هست ، اما کلید که تفاوت داره دیگه . یعنی الحاق این دو فیلد در هیچ 2 رکوردی تکراری نمیشه . در نتیجه بازم همه رو تو خروجی میاره

  10. #10

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

    سلام میتونی بر اساس فیلدی که میخوای group by کنی و تو هر کدوم (اگه واست فرق نمیکنه) با استفاده از max,min یا تابع های دیگه یکی شو بگیری

    select lnum , max(ID)
    from
    urTbl
    group by lnum



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

    select *
    from urtbl,
    (select lnum ,
    max(ID) as MID
    from
    urTbl
    group by lnum)
    as urTbbl1
    where ID = MID

    آخرین ویرایش به وسیله m.amjadi : سه شنبه 24 مرداد 1391 در 15:00 عصر

تاپیک های مشابه

  1. سوال: حذف رکورد های تکراری
    نوشته شده توسط علیرضا حسن زاده در بخش SQL Server
    پاسخ: 1
    آخرین پست: یک شنبه 27 تیر 1389, 13:06 عصر
  2. سوال: حذف رکورد های تکراری
    نوشته شده توسط hamed.rezaei در بخش SQL Server
    پاسخ: 10
    آخرین پست: دوشنبه 19 بهمن 1388, 15:58 عصر
  3. حذف رکورد های تکراری
    نوشته شده توسط error500 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 11 آبان 1387, 02:05 صبح
  4. حذف رکورد های تکراری؟
    نوشته شده توسط prog_2005 در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 0
    آخرین پست: یک شنبه 27 آذر 1384, 13:03 عصر
  5. حذف آیتم های تکراری از یک ListBox
    نوشته شده توسط nasr در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: جمعه 26 تیر 1383, 02:00 صبح

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

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