sql group by一問

本帖最後由 cliz 於 2011-5-28 08:33 編輯

在MySQL中, 我可以用以下query找出"每位人的最近日期"的id
select id,name,max(date) as maxdate from table1 group by name

table1
id           name          date
--------------------------------
1          Amy             2011/1/1
2          Amy             2010/12/1
3          Tom             2011/3/1
4          Tom             2011/4/1

但在MS access, access卻投訴id欄不在GROUP BY中,
因為結果要包含id,但id不是group by的條件, 請問有冇其他純sql方法做到跟MySQL一樣的結果?

試下
select id, a.name, maxdate
from
table1 a,
(select name,max(date) as maxdate from table1 group by name) b
where a.name=b.name and a.data=b.maxdate;

TOP

本帖最後由 神秘二代 於 2011-5-28 23:34 編輯

一個subquery算吧A_A

select id,name,date from table1 a where date >= all(select date from table1 b where a.name = b.name)

group by都省了~

TOP

select id,name,date
from table1
where (name, date) in
(select name,max(date) from table1 group by name);

SQL 可以叫做 relational language.  所以寫 SQL statement, 第一件事係要問自己 "What", 想要啲咩 data.  好多時候當你可以簡明地講得出想要啲咩 data, 條 SQL 就已經成形.

TOP