使用MAX()和GROUP BY相关的子查询

时间:2017-08-10 18:50:53

标签: mysql sql-server

我有使用MAX()和GROUP BY的问题。 我有下表:

personal_prizes

 ___________ ___________ _________ __________
|    id     |    userId |   specId| group    |  
|___________|___________|_________|__________|
|    1      |    1      |   1     |     1    |  
|___________|___________|_________|__________|
|    2      |    1      |   2     |     1    |  
|___________|___________|_________|__________|
|    3      |    2      |   3     |     1    |  
|___________|___________|_________|__________|
|     4     |    2      |   4     |     2    |  
|___________|___________|_________|__________|
|     5     |    1      |   5     |     2    |  
|___________|___________|_________|__________|
|     6     |    1      |   6     |     2    |  
|___________|___________|_________|__________|
|    7      |    2      |   7     |     3    |  
|___________|___________|_________|__________|


prizes
 ___________ ___________ _________ 
|    id     |    title  |   group |     
|___________|___________|_________|
|    1      |    First  |   1     | 
|___________|___________|_________|
|    2      |    Second |   1     | 
|___________|___________|_________|
|    3      |    Newby  |   1     | 
|___________|___________|_________|
|     4     |    General|   2     | 
|___________|___________|_________|
|     5     |    Leter  |   2     | 
|___________|___________|_________|
|     6     |    Ter    |   2     | 
|___________|___________|_________|
|     7     |    Mentor |   3     | 
|___________|___________|_________|

所以,我需要为用户选择最高标题。 例如。 id = 1的用户必须拥有奖品' Second',' Ter'。 我不知道如何在一个查询中实现它((( 所以,首先,我尝试为用户选择最高的specID。 我接下来试试:

SELECT pp.specID 
FROM personal_prizes pp
WHERE pp.specID IN (SELECT MAX(pp1.id) 
                    FROM personal_prizes pp1
                    WHERE pp1.userId = 1 
                    GROUP BY pp1.group)

它不起作用。 所以请帮我解决这个问题。 如果您帮助为用户选择奖品,那就太棒了!

0 个答案:

没有答案