【发布时间】:2016-12-06 08:11:36
【问题描述】:
这个问题之前已经被问过很多次了,但我的情况有点不同。
假设我有这些数据:
------------------------------
| id | date |
------------------------------
| 1 | 2016-07-15 |
| 1 | 2016-07-16 |
| 2 | 2016-07-24 |
| 2 | 2016-07-25 |
| 1 | 2016-07-29 |
| 1 | 2016-07-30 |
------------------------------
我想先按date 列排序,然后按id 列分组,并为每个id 取max(date)。
所以我会得到这个
------------------------------
| id | max(date) |
------------------------------
| 1 | 2016-07-16 |
| 2 | 2016-07-25 |
| 1 | 2016-07-30 |
------------------------------
注意id=1 出现了两次,因为顺序导致id=1 的2 个单独“组”,它们之间有一组id=2。
我的意思是,我希望 group by 函数仅将具有相同值且由 order by 子句彼此相邻放置的行组合在一起。
我该怎么做?
【问题讨论】:
-
允许的最大日期差异是多少,以便将这些日期放在一个组中?
-
@1000111 没有“差异限制”。关键是我只想将
id由order by子句彼此相邻放置的相同行组合在一起 -
你的表中没有主键吗?
-
您的数据违反了first normal form(“行没有从上到下的顺序”),这是 SQL 所基于的关系模型的最基本要求。我想这会使使用 SQL 查询数据变得比应有的更加困难。
标签: mysql sql sql-order-by