gpt4 book ai didi

MySQL 选择具有相同条件值的前几行

转载 作者:可可西里 更新时间:2023-11-01 06:33:01 24 4
gpt4 key购买 nike

我不知道如何命名这个问题。如果你有更好的词,请纠正我。

我有两个表,Users 和 Posts。

用户:

id | username | password | ...

帖子:

id | author_id | title | content | ...

现在我想列出“最活跃”的用户 - 发表帖子最多的用户。具体来说,我想要前 10 个 结果。

SELECT u.username, COUNT(p.id) AS count 
FROM Posts p, Users u
WHERE u.id=p.author_id
GROUP BY p.author_id
ORDER BY count DESC
LIMIT 10;

我能得到预期的结果。但是,如果某些用户的帖子数量相同,则排名可能不“公平”。

例如,我可能会得到如下结果:

User 1  | 14
User 2 | 13
...
User 9 | 4
User 10 | 4

在这里,实际上还有几个用户有 4 个帖子。

因此,前 10 名 可能不完全是 10 结果。我如何才能获得更“公平”的结果,其中包含拥有 4 个帖子的用户的额外行?

最佳答案

我认为这是正确的解决方案:您需要子查询才能知道有多少帖子在前十名中排在第 10 位。然后,您使用外部查询来提取几乎具有该发布计数的用户。

SELECT u.username, COUNT(p.id) AS count 
FROM Posts p
JOIN Users u ON u.id = p.author_id
GROUP BY p.author_id
HAVING COUNT(p.id) >=
(
SELECT COUNT(p.id) AS count
FROM Posts p
JOIN Users u ON u.id = p.author_id
GROUP BY p.author_id
ORDER BY count DESC
LIMIT 9, 1
)
ORDER BY count DESC

关于MySQL 选择具有相同条件值的前几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27739838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com