2016-04-07 6 views
0

Örneğin, sahip olduğum şey (Bu, farklı tablolarda farklı sorgulardan seçme sorgusunun sonucudur. o) X seç diyoruz:Sütunlardan birinde yinelenen bir değer seçen seçme sorgusu, yalnızca bir kez birden çok satırdan (örnek içeride) seç

ID c2 c3 c4 

1 A de ys 

2 A rq pm 

3 B rq qs 

Ben mesela, c2 belli bir değere sahip tek bir satır verecek bir sorgu istiyorum:

ID c2 c3 c4 

1 A de ys 

3 B rq qs 

veya

ID c2 c3 c4 

2 A rq pm 

3 B rq qs 

Bir veri yapısını kullanarak bunu nasıl yapacağımı biliyorum ama daha karmaşık, bir sorgu kullanarak bunu yapmanın bir yolu var mı?

Düzenleme: iyi ben bu açık ama en bırakacağım: (o X konularda ise = SELECT Responses.ID,Responses.PostID,Responses.Responding,Posts.ID,Posts.UserID,Users.ID,Users.Username FROM Responses,Posts,Users WHERE Responses.PostID =3 and Posts.ID = Responses.PostID AND Responses.Responding = Users.ID)

SELECT(Select X).* 
FROM (Select X) as (Select X) 
JOIN (
    SELECT MIN(ID) AS ID, Users.ID 
    FROM (Select X) 
    GROUP BY Users.ID 
) AS t2 ON (Select X).ID = t2.ID 

DÜZENLEME "hükmündeki itibaren sözdizimi hatası": Bu denedim ve hata veren şeydir Sonunda veri yapısını sorgu yolu olarak seçtim. Böyle

cevap

1

bir şey:

SELECT t1.* 
FROM mytable as t1 
JOIN (
    SELECT MIN(ID) AS ID, c2 
    FROM mytable 
    GROUP BY c2 
) AS t2 ON t1.ID = t2.ID 

Aynı c2 bir değerler grubu içinde en az ID değere sahip satır bulacaktır. İkinci sonuç kümesini almak için MAX toplama işlevini kullanabilirsiniz.

Not:ID tablonuzun PK olduğu varsayımı yaptım.

Düzenleme:

Sen SELECT sorgu böyle senden Türetilmiş tabloyu kullanabilirsiniz:

SELECT t1.* 
FROM (SELECT X ...) as t1 
JOIN (
    SELECT MIN(ID) AS ID, c2 
    FROM (SELECT X ...) AS t 
    GROUP BY c2 
) AS t2 ON t1.ID = t2.ID 
+0

Ben başka bir masaya kullanımını anlamadı, ben bir seçme sorgusu var ve istediğim Zaten farklı tablolardan terimleri olan seçme sorgunun ürününde söylediğimi gerçekleştirmek için. – user3575645

+0

@ user3575645 Türetilmiş bir tablo oluşturmak için select sorgusunu kullanabilir ve 'mytable' yerine bunu kullanabilirsiniz. –

+0

Peki t1 ve t2 hangi tabloları temsil eder? Aptal sorular için üzgünüm, sorgulardaki bilgim çok az ve yardım için teşekkürler. – user3575645

İlgili konular