如何仅包含SQL查询中的最后一个匹配项

时间:2014-10-02 16:31:27

标签: mysql sql

我有一个数据库,其中包含与一对多关系中的每个用户相关的用户和注释。

我想创建一个查询,返回用户的详细信息,包括最后注释。

这里举例说明数据:

enter image description here

因此,对于用户David,结果中包含的注释应为note.id = 6,例如John note.id = 3。

SELECT user.firstname, 
       user.lastname, 
       note.note 
LEFT JOIN note
ON note.userID = user.id 

我可以向此SQL查询添加哪些内容,仅包括每个用户的最后添加的注释?

2 个答案:

答案 0 :(得分:1)

添加where子句,以及select中可用的MAX(id)

WHERE note.id = ( SELECT MAX(id) FROM note)

编辑:

SELECT user.firstname, 
       user.lastname, 
       note.notes 
FROM user
LEFT JOIN note ON note.userid = user.id
WHERE note.id = ( SELECT MAX(id) FROM note
                  WHERE note.userid = user.id)
OR note.userid IS NULL --EDIT

答案 1 :(得分:0)

SELECT firstname, lastname, note
FROM user u
LEFT JOIN (SELECT *
           FROM note
           ORDER BY id DESC) n
ON u.id = n.userid
GROUP BY u.id