PDA

View Full Version : نمایش رکوردهای تکراری در جدول



FirstLine
دوشنبه 23 آذر 1383, 09:52 صبح
با سلام
چجوری میتونم فقط رکوردهای تکراری (رکوردهایی که بیش از یک بار تکرار شده است) در یک فیلد از جدول را نمایش دهم؟
با تشکر

mnajafi
دوشنبه 23 آذر 1383, 10:26 صبح
با استفاده از دستور group by و having می تونی اینکارو انجام بدی.
:موفق:

FirstLine
دوشنبه 23 آذر 1383, 11:50 صبح
با سلام
من میخوام فقط اطلاعات تکراری را نمایش بدهد نه اینکه همه را بدون تکراری ها را نمایش دهد
با تشکر

hmm
دوشنبه 23 آذر 1383, 14:27 عصر
select code,count(*)
from my_table
group by code
having count(*)>1

AminSobati
پنج شنبه 26 آذر 1383, 22:32 عصر
دوست عزیزم این بستگی به تعریف شما از رکورد تکراری داره. Query که دوست عزیزم hmm نوشتن، به این معنیه که رکوردها ممکنه فقط در فیلد Code مشترک باشند و این تعریف تکرار خواهد بود. اما گاها شما منطورتون از رکورد تکراری، یکسان بودن دو رکورد در تمام فیلدها خواهد بود. اینجا لازمه که Group By روی تمام فیلدها انجام بشه. مثلا:

create table MyTable(
c1 int,
c2 varchar(20),
c3 varchar(20))

insert MyTable values (1,'a','b')
insert MyTable values (1,'a','b')
insert MyTable values (1,'c','b')
insert MyTable values (2,'2','b')
insert MyTable values (1,'3','b')
insert MyTable values (1,'a','b')
insert MyTable values (2,'2','b')

select * from mytable order by c1,c2,c3

select count(*) as 'MyCount',c1,c2,c3 from mytable group by c1,c2,c3 having count(*)>1

FirstLine
چهارشنبه 07 بهمن 1383, 13:07 عصر
با سلام
کد کارم را راه انداخت

select code,count(*)
from my_table
group by code
having count(*)>1

اما یه مشکل دیگه ، حالا چجوری میتونم موارد اضافه یا بیشتر از 1 مورد را حذف کنم؟

با تشکر

esi022
چهارشنبه 07 بهمن 1383, 14:45 عصر
:strange: :strange:
Select Distinct(filed) from table

hmm
یک شنبه 11 بهمن 1383, 08:59 صبح
با یه جدول موقت
شما با استفاده از distinct اطلاعات رو در جدول موقت بریزید بعد جدول اصلی رو پاک کنید و جدول موقت رو دوباره در جدول اصلی کپی کنید .
راه دیگه ای به نظرم نمیرسه :oops:

AminSobati
پنج شنبه 22 بهمن 1383, 17:03 عصر
راه ذکر شده جالبه فقط برای اینکه سرعت کمی بالاتر باشه، میتونین به جای حذف همه جدول، فقط رکوردهایی که تکراری هستند رو به جدول موقت ببرین، بعد توسط دستور DELETE و Join کردن جدول موقت با جدول اصلی، رکوردهایی که تکراری بودند رو حذف کنین و بعد محتویات جدول موقتی رو به جدول اصلی برگردونین.