我有下表。我需要按fromdate
进行分组,
并为每个todate
获得最少fromdate
的结果。我该怎么办?
|------|--------------|--------------|
| 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 |
|------|--------------|--------------|
我试过这个,但它没有给我预期的结果:
Select * from test group by fromdate order by fromdate, todate
答案 0 :(得分:1)
简单:
SELECT fromDate, MIN(toDate) as minToDate FROM theTable GROUP BY fromDate
答案 1 :(得分:1)
您可以使用min
聚合函数。 MySQL文档中给出的示例看起来与您需要的类似。
mysql> SELECT student_name, MIN(test_score), MAX(test_score)
-> FROM student
-> GROUP BY student_name;
因此,对于您的情况,它将是:
SELECT
fromdate, MIN(todate)
FROM
mytable
GROUP BY fromdate;
查看此SO question的已接受答案,其中显示了如何获得最短日期,当然使用min()
。