ورود

View Full Version : خروجی: حذف رکوردهایی که بیش از 1 بار در جدول وجود دارند



shekoofeh
دوشنبه 10 آبان 1389, 10:48 صبح
سلام.
جدولی به صورت زیر داریم:


Id
LoanId
ManagerId
Title
Priority

اگر سه نمونه رکورد به شکل زیر در جدول وجود داشته باشند:


1
2
3
Title1
1

2
2
3
Title2
2

3
3
3
Title3
3

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

ممنو از راهنماییتون.

Reza_Yarahmadi
دوشنبه 10 آبان 1389, 11:07 صبح
چندين روش براي اين كار وجود داره يكي از روشها ميتونه بصورت زير باشه.
With h1 as
(
Select
Min(Id) as NId
From
TableName
Group By
LoanId
)
Select
Id,
LoanId,
ManagerId,
Title,
Priority
From
TableName t inner join h1
on
t.Id = h1.NId

shekoofeh
دوشنبه 10 آبان 1389, 12:19 عصر
مرسی.
لطف می کنید بگید چرا از Min استفاده کردید؟

Reza_Yarahmadi
دوشنبه 10 آبان 1389, 12:30 عصر
شما ميخوايد يكي از ركوردها رو داشته باشيد و بقيه رو حذف كنيد، توي كد فرض شده شما ميخوايد اولين ركورد (به شرطي كه Id مرتب شده وارد شود) رو داشته باشيد.
در هر صورت شما بايد يك فيلد يونيك رو محور قرار بديد و يكي از مقدارهاي فيلد يونيك در دسته بندي رو برداريد تا بعد بتونيد با يك Join با خودش كل ركورد رو استخراج كنيد