如何使用mysql选择多个最大值

时间:2014-03-08 19:55:13

标签: php mysql

我有一张像这样的表recipients

Id    user_id   thread_id
_________________________
1     1215      3833
2     1215      3833
3     1862      3833
........................

10    1215      3834
11    1862      3834

我有一个带有一些值的数组(user_id)。对于每个值,我的user_id -s,我想选择最大的thread_id。对于单个给定值(例如1215),我可以通过这个简单的查询获得值

query = "SELECT MAX(thread_id) FROM recipients WHERE user_id = 1215 "

但是当我尝试写这样的东西时,我不能用它来从表中获取所有最大的thread_id-s

query = "SELECT MAX(thread_id) FROM recipients WHERE user_id IN (1215,1862,1799)"

我想知道是否可以通过单个查询获取给定数组的所有最大值(不使用for或foreach并对每个数组值运行查询)。 谢谢!

2 个答案:

答案 0 :(得分:1)

你需要使用你应该对它们进行分组的聚合函数GROUP BY,对于第一个查询,有一个用户的where子句,因此它将给出你的最大线程id,但在第二个查询中你有3个用户id所以你需要将它们分组以获得每个用户3个最大线程ID

SELECT MAX(thread_id) 
FROM recipients 
WHERE user_id IN (1215,1862,1799)
 GROUP BY user_id 

fiddle demo

GROUP BY (Aggregate) Functions

答案 1 :(得分:0)

没试过这个但是小组应该工作。类似的东西:

query = "SELECT MAX(thread_id) FROM recipients GROUP BY user_id WHERE user_id IN ()"