2016-06-07 72 views
-1

我有两个表(userI_S),而I_S表包含一个名为score的列。我需要从表中获得最高分和相应的用户名。JOIN语句获取MAX值

我用左加入,但我一直在“字段列表”

这得到一个错误说

未知列“I_S.total_score”是我使用的查询。

SELECT MAX(interview_sessions.total_score) 
FROM interview_sessions as sc 
LEFT JOIN user as u on sc.user_id = u.user_id 
+0

这是没有意义的,查询可能应该'选择u.user_name,MAX(sc.total_score)FROM ... GROUP BY u.user_name'与发布元素,但没有解释关于'I_S.total_score'的错误消息 – 2016-06-07 11:31:58

+0

plz提及用户和interview_sessions表结构 – Ragesh

回答

1
SELECT DISTINCT users.name, I_S.score FROM users 
LEFT JOIN I_S ON I_S.user_id = users.user_id WHERE score IN (SELECT MAX(score) FROM I_S) 

与最大比分的所有用户。

,我想你应该sc.total_score interview_sessions.total_score写,而不是在你的查询,因为你用别名

+0

这个工作的编辑版本。谢谢@Vlad Latish –

1

尝试使用这样的:

SELECT MAX(sc.total_score) 
FROM interview_sessions as sc 
LEFT JOIN user as u on sc.user_id = u.user_id 
0

你需要一个内部查询,首先确定什么是最高分。形式,重新参加面试会议表上的最高分。然后加入到用户名称。有可能多人可以拥有相同的最高分数。

select 
    from 
     (SELECT MAX(i_s.total_score) as MaxScore 
      from interview_sessions i_s) maxAll 
     JOIN interview_sessions i_s2 
     on maxAll.MaxScore = i_s2.total_score 
     JOIN User u 
      on i_s2.user_id = u.user_id 
0

尝试这种方式

select b.*,a.totalscore from user b 
inner join(select userid,max(total_score) as totalscore from I_S) a on a.userid=b.userid