选择每个对象的计票数和得票最高的对象

发布于 2024-10-05 18:16:18 字数 218 浏览 3 评论 0原文

我有两个表:

带有字段 pk:id, fk:uid, date 的 VOTE 和带有字段 pk:id, ... 的 SUBMISSION。

表在 uid<-id 字段上具有 1to1 关系。我现在如何查询:

  • 对象列表及其分数
  • 列表(按分数排序的 10 个评分最高的对象)?

I have two tables :

VOTE with fields pk:id, fk:uid, date and SUBMISSION with fields pk:id, ....

Tables have 1to1 relation on uid<-id fields. How I can now query for :

  • list of objects together with their score
  • list of 10 top rated objects ordered by score ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一花一树开 2024-10-12 18:16:18
    SELECT s.*,
           COUNT(*) AS cnt
      FROM SUBMISSION s
INNER JOIN VOTE v ON s.id = v.uid
  GROUP BY s.id
  ORDER BY cnt DESC
     LIMIT 10

如果没有 ORDER BYGROUP BY 子句,您将只检索所有带有投票计数的提交内容。

但我强烈建议您在 SUBMISSION 表中创建 votes_count 字段,并使用触发器/代码维护它,以在其中存储预先计算的票数。

    SELECT s.*,
           COUNT(*) AS cnt
      FROM SUBMISSION s
INNER JOIN VOTE v ON s.id = v.uid
  GROUP BY s.id
  ORDER BY cnt DESC
     LIMIT 10

Without ORDER BY and GROUP BY clauses you'll just retrieve all the submissions with votes count.

But I highly recommend you to create votes_count field in the SUBMISSION table and maintain it with trigger/code to store the precalculated count of votes there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文