MySQL查询从一个表中获取最佳排名并用另一个表更新结果

2023-12-07

我有一个排名板,列出了每种性别(男性和女性)的前 100 个最佳博客。

我有一个博客表:

PRIMARY
blogs_id  users_id  blogs_score  blogs_score_time      gender
    1         11        2852     2015-09-09 05:21:51     m <-- same score but older date
    2         23        2146     2015-09-10 07:31:54     m
    3         23        2146     2015-09-10 07:32:26     m
    4         23        2852     2015-09-10 04:42:15     m <-- same score but newer date
    5         51        1793     2015-09-11 08:15:55     f
    6         88        2947     2015-09-11 09:33:18     f 

我有一个用户表:

PRIMARY
  id  best_rank  gender
  11      0         m
  23      0         m
  51      0         f
  88      0         f

我需要计算每个用户的最佳排名(使用 MAX(blogs_score) 和 MAX(blogs_score_time))博客表并插入/更新用户表每个性别的前 100 位排名最高的用户的排名最高,因此结果应该是:

PRIMARY
  id  best_rank  gender
  11      2         m
  23      1         m
  51      2         f
  88      1         f

其中,用户 id 11 的最佳排名为 2,因为用户 id 11 与用户 23 的得分相同,但日期比用户 23 更早。其中,由于女性组,用户 51 的排名为 2。我已添加栏目blogs_score_time以防止平局排名。日期 2015-09-10 表示 9 月 10 日。

最终的想法是在用户个人资料中显示排名位置,一旦有人投票(blogs_score博客表中的更改),best_rank栏目中的users必须使用新的排名重新计算来更新表ALL特定性别组中排名最高的 100 位用户。

如何根据我的需要调整和修复此(不起作用)查询?

 $sql->query("UPDATE users
            JOIN (SELECT b.users_id,
                         @curRank := @curRank + 1 AS rank,
                         MAX(blogs_score), MAX(blogs_score_time)
                  FROM blogs b
                         JOIN (SELECT @curRank := 0) r
                  ORDER BY  b.blogs_score DESC, p.blogs_score_time DESC LIMIT 100
                 ) ranks ON (ranks.users_id = users.id)
            SET users.best_rank = ranks.rank");

或者如何适应和修复这个(不起作用)查询

 $sql->query("INSERT INTO users (best_rank, id)
                  SELECT @rank := @rank + 1 AS rank, b.users_id
                       FROM blogs b
                       LEFT JOIN users u ON b.users_id = u.id
                  GROUP BY b.users_id, b.blogs_score, b.blogs_score_time, b.gender
                  ORDER BY b.blogs_score DESC, b.blogs_score_time DESC
              ON DUPLICATE KEY UPDATE best_rank = VALUES(rank)");

请帮我解决这个问题。我在stackoverflow上没有找到任何类似的解决方案,单独编写这样的查询对我来说似乎非常复杂。

预先非常感谢!


UPDATE users u, (
SELECT 
( 
    CASE gender 
    WHEN @curType 
    THEN @curRow := @curRow + 1 
    ELSE @curRow := 1 AND @curType := gender END
) + 1 AS rank, users_id, blogs_score, blogs_score_time, gender 
FROM blogs, 
(SELECT @curRow := 0, @curType := '') r
ORDER BY gender, blogs_score DESC, blogs_score_time DESC
) r1
SET u.best_rank = r1.rank
WHERE
u.id = r1.users_id

它有2个作用:

  1. 内部选择查询根据性别、分数和时间生成排名
  2. 更新用户表及其各自的排名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL查询从一个表中获取最佳排名并用另一个表更新结果 的相关文章

  • 无法访问 localhost/xampp/index.php

    我刚刚安装了 Windows 7 的 XAMPP 控制面板似乎工作正常 我启动了 MySql 和 Apache 我遇到的问题是 当我在浏览器 Google Chrome 中输入 localhost 时 它会将我发送到 http localh
  • PHP MongoDb 驱动程序:如何设置执行代码的超时

    我有以下代码 它在 MongoDb 端执行一段代码 mongoCode new MongoCode Some JS code db gt execute mongoCode array socketTimeoutMS gt 1000000
  • 是否可以将路由参数传递给 Laravel 中的控制器构造函数?

    是否可以将路由参数 或路由段 注入到控制器构造函数中 您找到一些代码来澄清我的问题 class TestController protected param public function construct paramFromRoute
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • CakePHP 视图包括其他视图

    我有一个 CakePHP 应用程序 在某些时候会显示带有产品媒体 图片或视频 的视图 我想知道是否有某种方式可以包含另一个威胁视频或威胁图片的视图 具体取决于标志 我想将这些 小视图 用于其他几个目的 所以它应该 像 蛋糕组件一样 以便重用
  • 如何将ElasticSearch与MySQL集成?

    在我的一个项目中 我计划将 ElasticSearch 与 MySQL 结合使用 我已经成功安装ElasticSearch 我可以单独管理ES中的索引 但我不知道如何用 MySQL 实现同样的功能 我读过一些文件 但我有点困惑 没有明确的想
  • 如何从网站网址中隐藏 .html 扩展名

    我知道这个问题以前曾被问过 但有人知道隐藏 html 扩展名的好方法吗 我已经尝试了许多代码和许多答案https stackoverflow com https stackoverflow com 但我没有看到结果 那是我再问你一次 我有一
  • 使用 PHP glob 列出 FTP 服务器上的文件不起作用

    我使用此代码来访问目录 location files pictures glob location png 我想使用 FTP 访问远程路径 location opendir ftp user password host name files
  • Bugzilla 中分离客户端的基本权限

    我正在尝试配置一个 Bugzilla 实例 这将允许我的客户登录并为其正在开发 维护的网站提交错误 例如 我创建了 2 个名为 TestProject TestProject2 的产品和一个名为 TestClient 的用户 我想要实现的是
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • PHP 编码风格回归;在开关/外壳中

    我们正在尝试为我们的团队实施新的编码风格指南 当未找到 break 时 php codeniffer 会在 switch case 语句上打印警告 如下所示 switch foo case 1 return 1 case 2 return
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • CodeIgniter:My_Lang 中的 get_instance

    我发现这个有用的国际化代码 http pastebin com SyKmPYTX http pastebin com SyKmPYTX 一切正常 除了我无法在此类中使用 CI 函数 我想从 DB 设置 languages 和 special
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 如何合并 Flex Datagrid 中的单元格?

    有没有办法在数据网格中合并单元格 垂直和 或水平 例如 至少有一种方法可以显示某些数据网格列属于一组 例如 我将采用三列 column1 column2 column3 所有这三个单元格都应分组到行距为 3 的 类别 单元格中 如果您愿意的
  • 在ggmap中对图例顺序进行排序

    如何对 ggmap 中的图例顺序进行排序 我有以下代码 mymap lt ggmap map geom point data mypoints aes x lon y lat colour month alpha 0 5 size 5 我希
  • 如何在特定坐标处将完整的 JTable 组件导出为 pdf

    在我的项目中 我必须以 pdf 格式打印 JTable 组件以及所有自定义项 如边框 颜色等 对于这个要求 我搜索了一下 找到了一个在 pdf 中打印 JTable 的代码 但打印后我发现表格的第一行和第一列的边框丢失了 而且我没有找到在某
  • Rail 4 中的批量分配受保护属性

    我收到错误消息警告 无法批量分配受保护的属性 有一种方法 强参数可以解决问题 但是失败了 我不想做attr accessible title description在每个模型中 我宁愿使用 Strong 参数 我在代码中使用 group p
  • Python 按标签和属性递归对 XML 元素进行排序

    我是 Python 新手 我正在尝试使用一些规则对 XML 进行排序 我的例子
  • 创建图像对象数组

    我正在尝试创建一系列图像对象 但很困难 每个对象将包含一个图像和图像的标题 当我将以下代码粘贴到 Firebug 中进行检查时 它工作正常 实施例1 var imageArray new Array imageArray 0 new Ima
  • 使用 REGEX 用可变长度零填充数字

    我遇到一种情况 客户端输入一个数字 我需要通过在其前面填充一定数量的零来验证该数字 我验证的字段的最大长度是 9 位数字 因此如果客户端输入 123 我需要在其前面填充 6 个零并进行验证 听起来很容易 对吧 好吧 这是最关键的 我对过程的
  • Codeigniter 连接模型中的两个表

    我想在我的模型中加入 2 个表 但它不起作用 这是我现在的模型 function list get id this gt load gt database query this gt db gt get where lists array
  • 如何使用 GET/POST 和 Token key 基于 Ajax 调用 ASP.NET Web API

    我知道如何将 Ajax 与 GET POST 数据一起使用 如下代码所示 但我不知道如何将其与 Token key 一起使用 已获得 Token key read1 click function support cors true ajax
  • C++ 未声明的标识符错误

    我得到一个未声明的标识符错误 我不知道为什么 我什至重写了完整的内容以确保我没有犯错 有人能告诉我为什么会出现这个错误吗 我的文件是 连接 hpp pragma once include LogicSimulator hpp include
  • 如何使用 thymeleaf 递归渲染菜单

    我想使用 ul li 列表呈现 HTML 菜单 我有这个类结构 public class MenuItem private String name private MenuItem parent private List
  • ASP.NET MVC:出现空 ActionLink

    我使用默认路由 因此不需要指定控制器 routes MapRoute Default action id new controller Home action Index id UrlParameter Optional 有了这个 我可以创
  • 在 C 中传递二维指针数组

    对于我的程序 我需要将一个二维指针数组传递给单独文件中的函数 我在下面编写了一个类似语法的文件 include
  • 使用 py2exe 捆绑时导入错误

    我使用 py2exe 捆绑了一个用 python 编写的小脚本 该脚本使用了许多包 其中之一是reportlab 使用 py2exe 捆绑后 我尝试运行可执行文件 但它返回以下错误 C Python26 dist gt DELchek ex
  • 在Python中调用C函数并返回2个值

    我试图弄清楚如何从我在 python 中调用的 C 函数返回 2 个值 我已阅读在线材料并使用 struct 输出这两个变量 当我在同一个 C 文件中调用此函数时 我能够输出变量 然而 当我尝试在 python 中调用它时 它仍然只返回一个
  • 外部存储上应用程序特定文件夹的权限

    有人可以解释一下应用程序特定文件夹的权限吗 Android data lt package name gt files 如此处所述http developer android com guide topics data data stora
  • 处理字母数字字符时 ksort 会产生错误的结果

  • 是否可以从获取的 url 而不是规范的 url 中提取元数据?

    我有一个像这样的 Facebook 链接到我没有完全控制权的页面 我可以修改但不是页面的 因此 我尝试在我拥有完全控制权的新页面上设置 like 按钮的链接 在此页面上设置opengraph元标记 并设置一个链接到原始页面的og url 但
  • 如何捕获全局异常?

    有没有办法捕捉global代码中的 崩溃 应用程序异常 例如 objc exception throw EXC ARITHMETIC 等 我需要它 因为我想在应用程序被系统杀死之前做一些事情 您可以使用以下方法为任何未捕获的异常设置处理程序
  • MySQL查询从一个表中获取最佳排名并用另一个表更新结果

    我有一个排名板 列出了每种性别 男性和女性 的前 100 个最佳博客 我有一个博客表 PRIMARY blogs id users id blogs score blogs score time gender 1 11 2852 2015