php - 仅返回 LEFT JOIN 的最新结果

标签 php sql left-join

<分区>

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

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

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

  • 学生a - 笔记
  • 学生a - 笔记
  • 学生 b - 笔记
  • 学生 c - 笔记

等...

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

希望这是有道理的?

最佳答案

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

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`

关于php - 仅返回 LEFT JOIN 的最新结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19545702/

相关文章:

Mysql 计数连接表 OneToMany

mysql - 如何查询可用的商品

mysql - 配置MySQL的mysqlsh默认接受SQL并连接

php - 在 TWIG 中渲染多维数组

php - 基于注释的 symfony2 表单创建器

sql - 今天最新和昨天最新记录

mysql - 有条件地选择连接表

MySQL返回访问过一个页面但未访问过另一页面的成员的唯一行

php - Laravel 5 路线不工作

php - PHP 中的 ORM 框架是如何构建的?