【发布时间】:2018-04-09 18:14:53
【问题描述】:
我在选择查询时遇到问题,不知道如何解决。我有两张桌子:
TABLE_students
|--------|------------|--------|
| STU_ID | EMAIL | NAME |
|--------|------------|--------|
| 1 | a@e.com | Bob |
| 2 | b@e.com | Joe |
| 3 | c@e.com | Tim |
--------------------------------
TABLE_scores
|--------|------------|-------------|--------|
| SRE_ID | STU_ID | DATE | SCORE |
|--------|------------|-------------|--------|
| 91 | 2 | 2018-04-03 | 78 |
| 92 | 2 | 2018-04-06 | 89 |
| 93 | 3 | 2018-04-03 | 67 |
| 94 | 3 | 2018-04-06 | 72 |
| 95 | 3 | 2018-04-07 | 81 |
----------------------------------------------
我正在尝试从两个表中选择数据,但有一些要求。我需要选择学生,即使他们在分数表中没有分数。我也只想要最新的分数记录。
下面的查询只返回那些有分数的学生,它也重复返回总共 5 行(因为有五个分数)。我想要的是查询返回三行(每个学生一个)和他们的最新分数(如果他们没有分数,则返回 NULL):
SELECT students.NAME, scores.SCORE FROM TABLE_students as students, TABLE_scores AS scores WHERE students.STU_ID = scores.STU_ID;
我很难弄清楚如何提取所有学生,无论他们是否有分数,以及如何仅提取最新的分数(如果有的话)。
谢谢!
【问题讨论】:
标签: mysql select join greatest-n-per-group