我有两个表用户(ID,姓名,电子邮件)和 评论(id,user_id,排名,内容)。在评论表中,我有 user_id 作为用户表的外键。现在我想加入带有评论表的用户表,并希望获得所有用户表数据以及仅具有最高排名的评论数据(id,等级,内容)。我试过mysql MAX函数但是数据返回不正确。有人可以指导我如何实现这一目标。
输入:
表1:具有属性ID,名称,电子邮件的用户
表2:具有属性id,user_id,rank,content
的注释
输出:用户表数据,评论表旁边排名最高。
user_id |名字|电子邮件| comment_id |排名|评论|
答案 0 :(得分:1)
您可以通过使用连接到排名最高的派生表来执行此操作。
select u.id, u.name, u.email, c.id, c.rank, c.content
from users u
inner join comments c on u.id = c.user_id
inner join
(select user_id, max(rank) as highest_rank from comments group by user_id) as x
on x.user_id = c.user_id and x.highest_rank = c.rank
这里我使用派生表x来记录每个用户的最高评论排名,然后使用它来限制返回的评论。
这适用于Postgresql