MySQL 按 ID 和最新日期时间分组

2023-11-24

我在这里看到了类似的问题,但没有一个对我的情况有帮助。

我有一个表可以说测试(使用 mysql MyISAM)

测试具有以下架构:

    TID INT PRIMARY KEY AUTO_INCREMENT
    TData varchar (data that i want to select)
    TUserID INT (this will be joined with users table, same users can have many records here)
    TViewedAt DATETIME (records each time user visits page, datetime format)

现在,每次当前登录的用户访问测试页面时,都会向该表添加记录,记录访问过的用户 ID、用户访问的一些数据以及日期和时间,每次 TID 都会自动递增。

然后我有一个后端管理页面,我可以在其中查看哪个用户访问了测试页面、访问了多少次、数据以及时间。基本上它是一个包含 20-25 最新行列表的表。我的查询应该只为每个数据选择一条记录。用户的数据可以相同,但在不同的时间,但我只想为每个用户选择一个最新的数据。因此,如果用户访问测试页面 10 次,则会有 10 条记录进入数据库,但在表中仅显示 1 条最新记录。如果另一个用户访问页面 15 次,它会为第二个用户显示 1 条记录,这也是最新的记录,所以现在表上总共显示 2 行。我一切正常,但由于某种原因 GROUP BY 和 MAX(date) 没有给我每个日期的最新日期时间。

这是我的查询:

   SELECT *
   FROM Test
   WHERE TUserID = 123
   GROUP BY TData
   ORDER BY TViewedAt

返回 2 行,其中没有最新的行。

多谢


我认为通过下面的操作你可以实现你所需要的,这些操作被称为“Group-wise Maximum”。

Option 1

这是最容易理解的,子查询将返回最大值TID自此以来的所有用户max与一起使用Group By然后我们执行其他查询来获取这些 ID 的所有数据。

 Select TID, TData, TUserID, TViewedAt
 From Test 
 Where TID In(
    Select Max(TID)
    From Test
    Group By TUserID
)

Option 2

理解起来稍微复杂一些,但很可能更有效,这基于以下情况:t1.TViewedAt处于最大值,没有t2.TViewedAt具有更大的值,t2 行值将是NULL.

SELECT t1.TID, t1.TData, t1.TUserID, t1.TViewedAt
FROM Test t1
LEFT JOIN Test t2 ON t1.TUserID = t2.TUserID AND t1.TViewedAt < t2.TViewedAt
WHERE t2.TUserID IS NULL;

Result

TID TData   TUserID   TViewedAt
4   test3   123       2012-10-05 00:00:00.000
5   test2   213       2012-10-03 00:00:00.000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 按 ID 和最新日期时间分组 的相关文章

随机推荐

  • JAX-RS 接受图像作为输入

    相当长一段时间以来 我一直在开发 JAX RS Web 服务来满足我的开发需求 到目前为止我编写的所有方法都接受 java 字符串或原始类型作为输入 这种方法的一个例子 POST Path MyMethod Produces MediaTy
  • C++项目中ffmpeg的CMake配置

    我已经使用 Homebrew 安装了 ffmpeg 版本 4 并且尝试在 C 项目中使用各种 ffmpeg 库 但在链接过程中遇到多个错误 Undefined symbols for architecture x86 64 av free
  • 浏览器选项卡和窗口之间的区别

    在 Web 浏览器中 每个窗口都有自己的 JavaScript 环境 以及自己的 JavaScript 环境 全局对象 但看起来在同一窗口中打开一个新选项卡也会创建一个不同的全局对象 这是真的吗 新选项卡和新窗口之间的主要区别是什么 唯一的
  • IntelliJ IDEA 不会加载在我的磁盘上找到的 Groovy

    您好 我最近想开始在 Groovy 中进行开发 但是当我尝试 IntelliJ IDEA 时 它不会加载 Groovy 因为它显示 看起来指定路径中的 Groovy 分发已损坏 不能 确定版本 发生了什么事我什至尝试了一些旧版本 但它也不起
  • 使用 Mono.Cecil 发出对 System.Lazy 构造函数的调用

    我正在尝试发出一种实例化 System Lazy 的方法 但失败并出现 无效令牌 的 PEVerify 错误 位于该行newobj instance void class mscorlib System Lazy 1
  • Next.JS 代码为何同时在服务器和客户端上运行?

    在 Next JS 应用程序中 您会看到组件的代码在服务器和客户端上运行 因此 如果您有以下代码 const Title gt console log gt Hello return h1 Some title h1 然后您在开发环境中运行
  • 将 ObservableCollection 绑定到 DataGridView

    我正在将可观察集合 FoodList 绑定到 WinForm 中的 BindingSource 此 BindingSource 由表单上的数据网格使用 我假设当我向集合中添加一个新项目时 它会引发一个事件 并且一个新行会出现在我的网格中 但
  • 如何使用RVM管理多个gemset和ruby版本?

    我对 RVM 网站上给出的解释感到非常困惑 我不清楚不同的红宝石解释器和宝石集之间的关系 按照我的说法 是这样的 我的 Mac 帐户有一个 rvm 该 nvm 安装并管理一组不同版本的 ruby 解释器 每个红宝石版本都有一组宝石 我把事情
  • 从 mongoengine 中的文档获取必填字段?

    我希望能够获取我创建的文档所需的列表或某种字段集 例如 这是我的文档 nickName StringField required True password StringField required True firstName Strin
  • 设置 Fcm 通知优先级 - Azure 通知中心

    我正在尝试在 C SDK 中的 Fcm 通知有效负载上设置高优先级 以便从后端将其发送到移动应用程序 根据 Fcm 文档 Json Paylod 应该如下所示 message topic subscriber updates notific
  • 即使通过 PuTTY 连接到 Windows 上的 GitHub 时也出现问题

    我知道已经在各个地方 Stack Overflow 内外 讨论了这个问题 但我还没有找到一致有效的解决方案 现在 我正在尝试通过 putty 连接到 github 我正在连接到 github com 加载我的私钥 并获得 登录为 迅速的 当
  • CSS 目标只是类名以字符串开头和结尾

    我想为我们公司创建某些标准的 css 代码 作为品牌 我想以我的公司名称开始所有类名 并以 Cls 结尾 div class Nam StdCss Cls div div class Nam StdCss Raduis Cls div di
  • 如何最小化asp.net中页面的视图状态大小?

    如何最小化asp net中页面的视图状态大小 请帮忙 您有多种选择来减少 ViewState 禁用视图状态对于不需要它的控件 这是最有效的解决方案 例如 如果您可以在服务器上缓存一些数据 那么您可以为每个请求重新绑定任何数据绑定控件 并且不
  • Flutter中main函数和runApp()函数有什么区别?

    我倾向于问这个问题 因为大多数时候我们直接调用 runApp 函数 main 而不执行其他操作 我的问题是为什么 runApp 和 main 保持不同 可能很简单 保留 main 函数或 runApp 函数 而放弃其他函数 在 Dart 中
  • 正则表达式:如果字母与数字相邻,则添加空格

    我正在使用 PHP 但不太擅长使用正则表达式 我需要一个 preg replace 如果字母或数字相邻 它可以添加空格 这些是场景 mystreet12 gt mystreet 12 mystreet 38B gt mystreet 38
  • Base10 到 Base64 网址缩短

    我正在为一个正在学习 php 的项目编写一个 url 缩短函数 这是代码 顺便说一句 我想global这不是一件好事 P alphabet array 1 gt a b c d e f g h i j k l m n o p q r s t
  • 如何在 Pygame 中按住“按键”?

    我使用 Pygame 1 9 6 和 Python 3 7 4 我想按住空格键 它会不断地一遍又一遍地执行相同的操作 我知道如何按下按钮KEYDOWN 我看了下问题 如何在 Pygame 中有效地按住键 寻求答案 但无法理解一个答案 whi
  • Delphi 编译和构建在同一项目上生成不同的二进制文件

    在新的 VCL 应用程序中Compile and Build操作生成相同的二进制文件和映射文件 即使关闭 在项目中包含版本信息 选项 exe 文件末尾也有细微差别 已经讨论过 映射文件的字节与字节相同 但是当我添加任何第三方组件时 构建和编
  • 从 ul li jquery 获取所选项目

    您好 我正在动态地在 ul li HTML 标记中填充一个列表 我所需要的只是获取相应 ul 的选定 li 的值 我尝试了所有可能的 jquery 方法 但仍然未定义 我将 ul li 填充为 jQuery get url function
  • MySQL 按 ID 和最新日期时间分组

    我在这里看到了类似的问题 但没有一个对我的情况有帮助 我有一个表可以说测试 使用 mysql MyISAM 测试具有以下架构 TID INT PRIMARY KEY AUTO INCREMENT TData varchar data tha