我有一张像这样的表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并对每个数组值运行查询)。 谢谢!
答案 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
答案 1 :(得分:0)
没试过这个但是小组应该工作。类似的东西:
query = "SELECT MAX(thread_id) FROM recipients GROUP BY user_id WHERE user_id IN ()"