2011-11-07 27 views
6

görmezden Yani böyle bir tablo var bir sütunun ayrı belirleyin: i ayrı seçmek kullanırsanızSQL: diğer sütunları

--------- 
id, keyid 
--------- 
1, 3 
1, 5 
1, 6 
2, 1 
2, 1 
2, 3 
4, 1 

I want the output of the query to be 
1,3 
2,1 
4,1 

(id, KeyID) tablodan o id çifti ayrı uygular , keyid ve sadece tek başına id değil.

cevap

13
select id, min(keyid) from tbl group by id 
+2

Bu yoldur. Genel olarak, her yerde ayrı ayrı uygulamak yerine, bu düşünceyi en azından anlamak için çok daha iyidir. – stefan

1

Her Id için KeyId'nin min değerini istiyorsanız, kullanıcı194076'nın yanıtı kesinlikle işe yarayacaktır. böylece, hem STATISTICS IO ve STATISTICS TIME kullanarak test ettik


WITH CTE AS (
    SELECT Id, KeyId, ROW_NUMBER() OVER (PARTITION BY Id ORDER BY Id) AS RN 
    FROM tbl 
) 

SELECT Id, KeyId FROM CTE WHERE RN = 1 

ve performans açısından aynı gibi görünen: Her kimliği için KeyID ilk olarak oluşan değer istiyorsanız

şunu kullanabilirsiniz Gerçekten tam olarak ihtiyaçlarınızın ne olduğuna bağlı.

İlgili konular