我希望有人能帮助我进行 sql 查询。
我有一张看起来像这样的 table :
ID | post_id | likes | somemorestuff...
1 | 1000 | 5 | ...
2 | 1000 | 20 | ...
3 | 1001 | 7 | ...
4 | 1002 | 11 | ...
5 | 1003 | 19 | ...
6 | 1003 | 19 | ...
7 | 1003 | 18 | ...
8 | 1004 | 17 | ...
9 | 1005 | 6 | ...
现在我需要将它们过滤到 MAX 喜欢和不同的帖子 ID。
我找到了这段代码,但在我的案例中它并不是 100% 有效。它给了我最大的点赞数和不同的帖子 ID,但只有一次与最大的点数不同。如果同一条目出现 r 3 次,则不会区分。我需要过滤掉 double 一次。希望有人能在这里提供帮助。
SELECT p.*
FROM posts p
INNER JOIN
(SELECT post_id, MAX(likes) AS MaxLikes
FROM posts
GROUP BY post_id) grouped
ON p.post_id = grouped.post_id
AND p.likes = grouped.MaxLikes
ORDER BY p.post_id ASC
结果是这样的:
ID | post_id | likes | somemorestuff...
2 | 1000 | 20 | ...
3 | 1001 | 7 | ...
4 | 1002 | 11 | ...
5 | 1003 | 19 | ...
6 | 1003 | 19 | ...
8 | 1004 | 17 | ...
9 | 1005 | 6 | ...
最佳答案
您需要使用相关 方法的子查询
:
select p.*
from posts p
where p.likes = (select max(p1.likes) from posts p1 where p1.post_id = p.post_id);
关于mysql - SQL 查询 MAX 值属性 1 和不同的属性 2,带有双条目过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261578/