我不知道该如何称呼这个问题。如果你有更好的话请指正我。
我有两个表,用户和帖子。
使用者:
id | username | password | ...
帖子:
id | author_id | title | content | ...
现在,我要列出“最活跃”的用户-写得最多的用户。具体来说,我想要top 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
帖子的用户。
因此,这top 10
可能不是确切的10
结果。如何获得包含帖子的额外用户行的更“ 公平 ”的结果4
?
我认为这是正确的解决方案:您需要子查询才能知道在前十名中排名第十的职位有多少。然后,您可以使用外部查询来提取具有几乎该后计数的用户。
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
问题内容: 我有一张桌子,像这样: 我想选择具有相同基因座和染色体的所有行。例如,第3行和第4行。一次可能有2个以上,并且它们可能不是按顺序排列的。 我尝试了这个: 但是,即使重复,它总是返回第3行,从不返回第4行。我想我缺少明显而简单的东西,但我茫然。 有人可以帮忙吗? 问题答案: 您需要了解,当您在查询中包含内容时,您是在告诉SQL合并行。您将为每个唯一值获得一行。在随后过滤这些组。通常,您可
问题内容: 我的表是: 我想列出一组具有相同疾病的患者。pid和did分别是患者和疾病表中的主键,并且是has_disease表中的外键。 样本数据: 耐心 疾病 has_disease 以上数据的答案是因为它们具有完全相同的疾病1和3,即疟疾和病毒热。我想知道如何在mysql中实现这一点。 。 问题答案: 该查询返回给我们患者及其疾病。 通过完整的剂量列表比较2组患者,并将pid保留为相同的剂量
问题内容: 该主题的解决方案使我不知所措。 我有一个看起来像的表格(除与我的问题无关的其他字段之外): 名称,卡号,会员类型 现在,我想要一个显示卡号和成员类型相同的行的视图。这两个字段都是整数。名称为VARCHAR。名称不是唯一的,并且相同的名称也应显示重复的卡号,会员类型。 即,如果下表是表格: 我想要: 只需按卡号排序即可使其对人类有用。 最有效的方法是什么? 问题答案: 由于您提到的名称可
exTab 如何使用SQL(与mySQL一起)只返回col1中具有多个相同值、col2中具有多个相同值、但COL3中具有唯一值的行? 例如,在上面的表(exTab)中,val1在col1中出现了4次,对于这4次,val4在col2中出现了3次,但是对于这3次,val7在col3中只出现了一次,所以我想返回这一行(第1行)。考虑到这些条件,第1行将是我希望从此表返回的唯一一行。 我试过和group
问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复表达: 或包装查询
问题内容: 假设我有两个表格,书籍和评论。评论具有一列,星号,其值可以介于1到5之间。一本书可以包含许多评论。 如何选择所有书籍,以便使用Criteria API返回每本书的前3名和后3条评论(而不是所有评论)? 如果Criteria API无法使用,我会提出其他建议,例如HQL,SQL等。 问题答案: 回答我自己的问题… 我实际上对这有多么困难感到惊讶。涉及查询书籍的所有解决方案以及每本书具有其