2016-03-31 22 views
-2

Aşağıdaki tabloya sahibim. fromdate, ile gruplandırmam ve fromdate için en az todate sonucunu almam gerekiyor. Nasıl yapabilirim?Gruplandırma tablosunu tarih bazında

|------|--------------|--------------| 
| id | fromdate |  todate | 
|------|--------------|--------------| 
| 1 | 2016-03-01 | 2016-01-05 | 
| 2 | 2016-03-01 | 2016-01-11 | 
| 3 | 2016-03-01 | 2016-01-12 | 
| 4 | 2016-03-05 | 2016-01-05 | 
| 5 | 2016-03-05 | 2016-01-11 | 
| 6 | 2016-03-06 | 2016-01-04 | 
| 7 | 2016-03-06 | 2016-01-17 | 
| 8 | 2016-03-06 | 2016-01-19 | 
| 9 | 2016-03-09 | 2016-01-04 | 
|10 | 2016-03-09 | 2016-01-11 | 
|------|--------------|--------------| 

Bunu denedim, ama bana beklenen sonucu vermiyor:

Select * from test group by fromdate order by fromdate, todate 
+0

Lütfen [sor] 'yu okuyun. Ve soruyu düzenleyin ve bir [mcve] ekleyin. –

+0

Denediğiniz herhangi bir sorguyu paylaşır mısınız? – Daenarys

+0

herhangi bir girişimde bulunuldu mu? – 1000111

cevap

1

Basit:

SELECT fromDate, MIN(toDate) as minToDate FROM theTable GROUP BY fromDate 
+0

Oops! Senden sadece 19 saniye önceydi! –

+0

Teşekkürler .. ne istediğimi. –

1

Sen min toplama işlevini kullanabilirsiniz. MySQL belgelerinde verilen örnek, ihtiyaç duyduğunuz şeye benzemektedir.

mysql> SELECT student_name, MIN(test_score), MAX(test_score) 
    ->  FROM student 
    ->  GROUP BY student_name; 

Yani, dava için o olacak:

SELECT 
    fromdate, MIN(todate) 
FROM 
    mytable 
GROUP BY fromdate; 

tabii min() kullanan minimum tarihten, nasıl gösterir bu SO question kabul cevap bakabilirsiniz.