我有两个表:选择*最新*等级信息为每一个学生
STUDENT GRADES
---------- ----------
id id
name person_id
address date
city test_name
phone grade
每个学生都会有在成绩表中的几个条目。我想知道是否可以使用SQL(Postgres)来选择所有学生以及他们的最新成绩信息。我基本上需要一个如下所示的结果表,其中date,test_name和grade用于最新结果(按日期)。
LATEST_GRADES
----------------
id
name
address
city
phone
grade_id
date
test_name
grade
任何帮助将不胜感激,谢谢。
编辑:加入溶液QUERY
SELECT * FROM
students s
JOIN (SELECT DISTINCT ON (person_id) person_id, date, test_name, grade
FROM grades
ORDER BY person_id, date DESC) g
ON s.id = g.person_id;
这一个实际上对我很好。我在问题结尾处发布了解决方案查询。其他一些双查询解决方案花费了大约20多秒。尝试DISTINCT ON方法后,我把它降到3+秒以上。 我的'成绩表'实际上有50,000多行。 – PKKid 2010-01-28 21:27:46