【发布时间】:2013-03-26 18:17:44
【问题描述】:
我的桌子是这样的:
id | user_id | period_id | completed_on
----------------------------------------
1 | 1 | 1 | 2010-01-01
2 | 2 | 1 | 2010-01-10
3 | 3 | 1 | 2010-01-13
4 | 1 | 2 | 2011-01-01
5 | 2 | 2 | 2011-01-03
6 | 2 | 3 | 2012-01-13
... | ... | ... | ...
我只想选择最新的用户期间条目,记住用户不会都有相同的期间条目。
基本上(假设我只有上表)我想得到这个:
id | user_id | period_id | completed_on
----------------------------------------
3 | 3 | 1 | 2010-01-13
4 | 1 | 2 | 2011-01-01
6 | 2 | 3 | 2012-01-13
以下两个查询总是导致选择第一个 user_id 出现,而不是最新的(因为排序发生在根据我的理解选择行之后):
SELECT
DISTINCT user_id,
period_id,
completed_on
FROM my_table
ORDER BY
user_id ASC,
period_id DESC
SELECT *
FROM my_table
GROUP BY user_id
ORDER BY
user_id ASC,
period_id DESC
【问题讨论】:
-
可能重复:stackoverflow.com/questions/3442931/… 。您可以通过向表中添加自动增量 id 来获得与该问题类似的情况。
标签: mysql