0

“t_example”表:

id | date
---------------
1  | 2001-05-09
1  | 2005-11-05
1  | 2000-08-19
2  | 2010-10-30
2  | 2002-12-10
2  | 2009-07-29
3  | 2003-02-15
3  | 2012-04-20

我想创建一个返回以下结果的视图(每个 id 的最大日期):

id | date_id
---------------
1  | 2005-11-05
2  | 2010-10-30
3  | 2012-04-20

MySQL 不允许在视图中使用 order by 进行子查询,当我对子查询使用其他视图时,group by 会忽略子查询中的 order by。

以下查询返回预期结果:

select id, date
from (select id, date from t_example order by id asc, date_id desc) p
group by p.id

但是当我在视图中使用它时它不起作用:

view1 (subquery) : select id, date from t_example order by id asc, date_id desc;
view2 : select id, date from view1 group by view1.id;

还有其他解决方案吗?

4

2 回答 2

3

这应该适合你

SELECT id, MAX(date) AS date FROM t_example GROUP BY id;

这是使用AS语法来保持你的列名简洁(否则它会MAX(date)

于 2013-10-14T20:17:00.310 回答
1

按 id 从 your_table 组中选择 id,max(date)

于 2013-10-14T20:15:03.963 回答