3

我正在从两个表(students2014 和 notes2014)中查询数据,以便返回学生列表以及每个学生的注释。为此,我使用以下 select 语句:

SELECT * 
FROM students2014 
LEFT JOIN notes2014 
ON students2014.Student = notes2014.NoteStudent 
WHERE students2014.Consultant='$Consultant' 
ORDER BY students2014.LastName

这成功地给了我一个列表,但是有多个笔记的学生出现了两次,例如:

  • 学生a - 注意
  • 学生a - 注意
  • 学生 b - 注意
  • 学生 c - 注意

ETC...

我只希望为每个学生显示最新的笔记,因此只提供每个学生的列表一次。

希望这有意义吗?

4

3 回答 3

1

您需要使用子查询连接 studends 表。像这样的东西应该工作:

SELECT * 
FROM `students2014`
LEFT JOIN (
    SELECT `note`, `NoteStudent`
    FROM `notes2014`
    HAVING `NoteID` = MAX(`NoteID`)
    GROUP BY `NoteStudent`
) `notes`
ON `students2014`.`Student` = `notes`.`NoteStudent`
WHERE `students2014`.`Consultant`='$Consultant' 
ORDER BY `students2014`.`LastName`
于 2013-10-23T15:20:52.403 回答
0
select
  *
from
  `students2014`,
  `notes2014`
where
  `students2014`.`Student` = `notes2014`.`atudent`
  and `notes2014`.`id` in (
    select
    'NoteStudent`,
     max('NoteID`) as`MaxID`
  from
    `notes2014`
  group by
    `NoteStudent`
  )`
于 2013-10-23T15:39:26.027 回答
0

尝试(我不测试它,但必须工作):

SELECT *, MAX(notes2014.notesID) as maxnoteid 
FROM students2014 
LEFT JOIN notes2014 ON students2014.Student = notes2014.NoteStudent
WHERE students2014.Consultant='$Consultant' AND notes2014.notesID = maxnoteid 
GROUP BY students2014.ID
ORDER BY students2014.LastName
于 2013-10-23T15:29:12.203 回答