混合不同类别的结果,在 MySQL 中按分数排序

2023-12-02

在我的 PHP 应用程序中,我有一个 mysql 文章表,其中包含以下列:

article_id    articletext    category_id    score

每篇文章都有一个分数,该分数是根据其受欢迎程度计算的,并且属于特定类别(大约有 10 个类别)

我的问题是:如何执行返回得分最高的文章的查询,同时按类别交替它们,以便如果可能的话,不会连续返回相同类别的文章。 例如,如果得分最高的文章得分:100,则返回集将类似于:

article_id    articletext    category_id    score
-----------------------------------------------------
142           <.....>        5              100
153           <.....>        3              97
119           <.....>        5              99
169           <.....>        2              93
121           <.....>        7              89
197           <.....>        2              92
.
.
.

想到的第一个(天真的)解决方案是执行 10 个选择(每个类别 1 个),按分数降序对它们进行排序,然后在 PHP 级别中,在每个返回的数据集之间交替,一次选择一个结果并将它们组合在一起在一个新的数组中。

有没有更有效的方法来实现这一目标?如果可能的话在 MySQL 级别


获取前 20 个。如果不满足要求,则进行额外的查询以获取缺失的部分。您应该能够在查询数量和每次返回的行数之间取得一定的平衡。

如果你得到了前 100 个,它可能会满足 90% 的时间的要求,并且比 10 个单独的查询更便宜、更快。

如果是 SQL Server 我可以帮助更多......

其实我还有另一个想法。每 5 分钟运行一个进程来计算列表并将其缓存在表中。使针对相关表的 DML 使缓存无效,以便在重新填充之前不会使用它(可能删除了一篇文章)。如果缓存无效,您将回退到动态计算它......并且无论如何都可以使用它来重新填充缓存。

可以有策略地更新缓存列表而不是重新计算它。但这可能是一个真正的挑战。

这应该有助于提高查询速度并减少数据库的负载。如果您的文章列表已过时 5 分钟,那也没什么关系。哎呀,即使是 1 分钟也可以。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

混合不同类别的结果,在 MySQL 中按分数排序 的相关文章

  • 使用 EXPLAIN 进行 MYSQL 存储过程调用

    如何分析和使用 EXPLAIN 来调用我的存储过程 我需要优化查询时间 但是似乎没有地方可以执行 EXPLAIN 调用 proc name 你可以试试 set profiling 1 call proc name show profiles
  • 在php中对带有特殊字符的多维数组进行排序

    我有一个多维数组 我按字母顺序排序 但问题是 带有丹麦语特殊字符 它们应该按该顺序排序 但不会按该顺序返回 这是我的数组 部分已删除 Array 0 gt Array Name gt John 1 gt Array Name gt Pate
  • MySql 查询在选择中将 NULL 替换为空字符串

    如何用空字符串替换 select 中的 NULL 值 输出 NULL 值看起来不太专业 这是非常不寻常的 根据我的语法 我希望它能够工作 我希望能得到一个解释 为什么没有 select CASE prereq WHEN prereq IS
  • Blueimp jQuery 文件上传,传递额外的表单数据

    我可以使用一些帮助 我已经设法使 blueimp jQuery 文件上传为我工作 但我仍然绝对是一个新手 我对 jQuery 等知之甚少 所以请尝试将其清晰明了地提供给我尽可能简单 我会尝试具体一点 好的 我想实现的是人们可以上传照片 并为
  • FOSUserBundle & REST Api 调用:如何使用自定义 FormType?

    我在我的 Symfony2 网站上使用 FOSUserBundle 现在我正在开发一个 API 以允许通过 REST API 调用进行注册 我已经覆盖了 FOSUserBundle 的 RegistrationController ApiR
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • PHP - 发送带有附件的电子邮件不显示消息内容

    尝试创建一个脚本 我可以在其中发送带有附件的电子邮件 一切正常 除了当我不在电子邮件中添加文件时 我仍然可以看到带有 0B 且没有名称的附件 if isset POST my send email to POST my email to r
  • 在 PHP 中关闭 session.cookie_secure 的后果

    在安全连接下关闭 PHP 中的 session cookie secure 会带来哪些安全风险 我很想关闭此功能 因为我无法访问从 https 页面到 http 页面的会话数据 风险在于 cookie 数据是通过纯 HTTP 传输的 任何在
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • MySQL 中的断言

    我有一个针对大型数据库运行的 SQL 脚本 我想在开始时提出几个简单的查询 作为健全性检查 有没有办法在MySQL中写断言 或者任何类型的 选择 如果它与该值不匹配 则中止整个脚本 一些疯狂的代码 要点是 SET可能会引发 mysql 变量
  • php包含来自另一个目录的文件

    这是一个结构示例 main css style css include article1 php article2 php header php index php 在我的 header php 中 我有以下 css 代码 例如 在我的 i
  • Zend Framework 2 将变量传递给模型

    我目前正在开发一个多语言网站 对于多语言部分 我使用翻译器 poedit 我将所选语言存储在会话中 效果很好 模块 php public function onBootstrap MvcEvent e session new Contain
  • PHP 错误请求中 HTTP 请求失败

    我可以直接从浏览器请求 URL Web 服务 WS 但是当我在代码中使用 file get contents 或 fopen 方法时 我收到一条错误消息 有人有不使用curl的解决方案吗 public function sendHttpRe
  • 选择MySql表数据放入数组中

    我尝试从 mysql 捕获数据并将它们全部放入数组中 认为 users table id name code 1 gorge 2132 2 flix ksd02 3 jasmen skaod2 sql mysql query select
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • MySQL“选择更新”行为

    根据 MySql 文档 MySql 支持多粒度锁定 MGL case 1 开放航站楼 1 连接到mysql mysql gt start transaction Query OK 0 rows affected 0 00 sec mysql
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • Laravel 集合 .each() + array_push

    需要有关 Laravel 上 each 方法内的 array push 的帮助 我无法在此代码上获取容器数组 imagesData array collect data images gt each function v k use ima
  • 物理写入文件已满 - mysql 错误

    我正在使用xampp 每次启动mysql时 我都会在xampp中收到以下错误 Error MySQL shutdown unexpectedly 13 16 14 mysql This may be due to a blocked por
  • 如何在 Laravel 中创建一条包罗万象的路线

    我需要一个 Laravelroutes php将捕获所有流量到特定的条目example com premium section网站 以便我可以提示人们在访问优质内容之前成为会员 您还可以通过在参数上使用正则表达式来捕获 全部 Route g

随机推荐

  • DataTables+Datepicker 按日期范围过滤表

    尝试使用两个有界日期选择器按日期范围实现数据表过滤器 我在 SO 上见过很少类似的问题 但没有一个答案对我有用 到目前为止 我设法实现了界面元素 但不知道如何将它们组合在一起以进一步进行 任何帮助表示赞赏 var myTableData i
  • 在 R 包中包含 TMB C++ 代码的指南

    我最近发现了 TMB 的神奇之处 并且正在开发一个包 最好在其中包含 TMB c 模板 以用于计算成本相当高的模型 我假设有可能 在软件包安装时自动编译 TMB 源代码 但我在 TMB 文档中找不到与此相关的任何明确指南 到目前为止 我的替
  • 如何在 C# 中创建 Trie [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有谁知道在哪里可以找到如何在 C 中构造 trie 的示例 我正在尝试使用字典 单词列表并用它创建一个字典树 这是我自己的代码 从我的答案中提取如何
  • 使用 Java 8 Streams 的收集器根据现有键/值对增加值

    假设有一个List然后Object包含两个方法 getUserId and getPoints 考虑一下List包含三个对象 它们包含以下数据 userId A 3 points userId A 5 points userId B 1 p
  • jqGrid 迭代子网格中的网格数据

    我想迭代网格对象中包含的所有数据 我的网格有一个包含子网格对象的定义 并以这种方式创建 var grid gridID var pager pagerID grid jqGrid url GetBaseWSUrl MyWs asmx MyM
  • 使用 VBA 将 Excel 数据保存为 csv - 删除文件末尾的空白行以保存

    我正在 VBA 中创建一组 csv 文件 我的脚本正在创建我需要的数据集 但行数在循环的多次迭代中有所不同 例如 对于 i 2 我有 100 000 行 但对于 i 3 我有 22 000 行 问题是 当 Excel 保存这些单独的 csv
  • 使用方法体的 Java 8 谓词仅被调用一次?

    我检查了以下片段 public static
  • 包括使用 data.table[by=...] 时的所有排列

    我有一个大data table我正在使用以下方法将其折叠到月份级别 by 变量有 5 个 级别数 c 4 3 106 3 1380 106 是月份 1380 是地理单位 事实证明 有一些 0 因为有些单元格没有值 by放弃这些 但我希望它保
  • Django 多个用户配置文件/子配置文件

    我正在尝试创建一个具有内部 外部用户特定配置文件和通用通用配置文件的内联网 外联网 我已经查看了该网站上的几个答案 但没有一个具体解决我想要做的事情 以下是我迄今为止拥有的 精简的 文件 创建配置文件模型以及针对每种用户类型的子配置文件的最
  • Angular 2 - 当一个 Http 请求依赖于另一个 Http 请求的结果时该怎么办

    我无法弄清楚如何使用 Http 请求的结果来发出另一个 Http 请求 我有一个从后端 API 请求并接收 JSON Web 令牌的服务 如下所示 Injectable export class JwtAuthorizationServic
  • 使用列别名作为排序键的 Spring 批处理 - 格式错误的“where”语句

    我正在使用 Spring batch 版本 3 0 6 RELEASE 查询 MySQL DB 中的某些数据 然后对其进行处理 使用详情 查询提供者是MySqlPagingQueryProvider 设置查询提供程序时 我将查询中的列之一指
  • R中的操作重载[重复]

    这个问题在这里已经有答案了 重载字符 的最直接方法是什么 我已经定义了 lt function paste sep str lt aa bb cc str aabbcc 但我不喜欢这种语法 我认为str lt aa bb cc 会更好 我正
  • Asp.Net Web API 路由未命中自定义操作

    这是我的代码 public class SecurityController ApiController GET api Security Current public HttpResponseMessage GetCurrent POST
  • x 和 x 之间的调用不明确

    我已经从 Visual Studio 切换到 Visual Studio Code 以在 Unity 中进行开发 从那时起我已经获得了超过 1000 个 某个班级成员和其他班级成员之间的通话不明确 在任何地方 它们都不是真正的错误 我认为
  • 更改输入值后,innerHTML 未更新(checked = true/false/"checked")

    简介 我需要获取parentElement中的信息 但是我需要更新输入信息 当我抓取parentElement的innerHTML时 在取消选中该框后 它仍然显示为选中状态 html 没有反映我用 javascript 所做的更改 我这里有
  • 如何修复我的 Python nix flake 中的“[Errno 13] 权限被拒绝:'_cmp.pyi'”?

    我正在尝试在 NixOS 上安装 jupyter book 我有这个薄片 description Introduction to Computational Literary Analysis a Textbook outputs self
  • Node.js 异步模块的复杂用例

    我已经开始使用 Node js 作为后端来执行不同的操作 例如数据库查询 API 调用等 我正在阅读有关 Node js 的内容Async并决定尝试一下 它一直适用于简单的用例 在这些用例中 我想要并行或串行执行一些任务 但不知何故 我遇到
  • Struts 2约定插件-上传超过2MB的文件

    如果我尝试上传超过 2 MB 的文件 则会出错 我在 apache 网站上发现 有两个单独的文件大小限制 第一个是 struts multipart maxSize 它来自 Struts 2 default properties 文件 此设
  • 如何找到错误图像?

    我在图像处理方面遇到问题 但不知道如何解决 我有2张图片 图1 http goo gl BBxVl 图2 http goo gl X0VFW 图2实际上表达了图1 但它被物体覆盖了 我正在使用 matlab 代码编写一个程序来定义 如果图片
  • 混合不同类别的结果,在 MySQL 中按分数排序

    在我的 PHP 应用程序中 我有一个 mysql 文章表 其中包含以下列 article id articletext category id score 每篇文章都有一个分数 该分数是根据其受欢迎程度计算的 并且属于特定类别 大约有 10