MySQL如何通过MAX(id)选择smth .... WHERE userID =某个数字GROUP BY smth

时间:2017-08-12 12:57:49

标签: mysql

我的数据库中有下一张表:

personal_prizes

 ___________ ___________ _________ __________
|    id     |    userId |   specId|   grp    |  
|___________|___________|_________|__________|
|    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    |  
|     8     |    1      |   13    |     4    |
|___________|___________|_________|__________|

我需要通过grp选择max id group的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.grp)

这对我的小桌子有用。但当我尝试使用personal_prizes>为我的prod db实现它时100,000。 请帮我优化一下

0 个答案:

没有答案