MySQL 每组前 2 条记录

2024-02-15

基本上,考虑到最后的创建日期时间,我只需要获取每个用户的最后 2 条记录:

id | user_id | created_datetime
1  | 34      | '2015-09-10'
2  | 34      | '2015-10-11'
3  | 34      | '2015-05-23'
4  | 34      | '2015-09-13'
5  | 159     | '2015-10-01'
6  | 159     | '2015-10-02'
7  | 159     | '2015-10-03'
8  | 159     | '2015-10-06'

返回(预期输出):

2  | 34      | '2015-10-11'
1  | 34      | '2015-09-10'
7  | 159     | '2015-10-03'
8  | 159     | '2015-10-06'

我正在尝试这个想法:

select user_id, created_datetime, 
$num := if($user_id = user_id, $num + 1, 1) as row_number, 
$id := user_id as dummy 
from logs group by user_id 
having row_number <= 2 

这个想法是只保留前两行并删除所有其他行。

有任何想法吗?


你的想法很接近。我认为这样会更好:

select u.*
from (select user_id, created_datetime, 
             $num := if(@user_id = user_id, @num + 1,
                        if(@user_id := id, 1, 1)
                       ) as row_number
      from logs cross join
           (select @user_id := 0, @num := 0) params
      order by user_id 
     ) u
where row_number <= 2 ;

以下是变化:

  • 变量仅在一个表达式中设置。 MySQL 不保证表达式求值的顺序,因此这一点很重要。
  • 该工作在子查询中完成,然后在外部查询中进行处理。
  • 子查询使用order by, not group by.
  • 外部查询使用where代替having(实际上,在MySQL中having会起作用,但是where更合适)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 每组前 2 条记录 的相关文章

  • 为什么我在 WinForms 列表框中得到“System.Data.DataRowView”而不是实际值?

    每当我运行代码并尝试查看highscore我在列表框中得到的只是System Data DataRowView 谁能明白为什么吗 Code MySqlConnection myConn new MySqlConnection connStr
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • 随机排列每行的列值

    我正在使用 C NET 开发多项选择题考试生成器 每次做出报告时 都会在数据库中随机挑选问题 并随机调整选项 我可以做随机问题部分 但我不能做选择的洗牌 我有一张表 其中一行如下 question answer distractor1 di
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • oracle lag 函数与 group by

    我有一个查询忽略从前一个值增加的值 例如 采用下表 col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询 select col1 from select col1 lag
  • 删除前导零

    给定列中的数据 如下所示 00001 00 00026 00 我需要使用 SQL 删除空格后面的所有内容以及值中的所有前导零 以便最终输出为 1 26 我怎样才能最好地做到这一点 顺便说一句 我正在使用 DB2 这已在 DB2 for Li
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 在bigquery中比较两个表的有效方法

    我有兴趣比较两个表是否包含相同的数据 我可以这样做 standardSQL SELECT key1 key2 FROM SELECT table1 key1 table1 key2 table1 column1 table2 column1
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • Postgresql:SERIAL 在约束 INSERT 失败时递增

    有一个像这样的简单表结构 CREATE TABLE test id INT PRIMARY KEY sid SERIAL 我注意到如果我尝试插入一行但它未通过约束测试 即主键约束 SERIAL计数器无论如何都会增加 所以下一次成功插入 si

随机推荐

  • Bootstrap tabbable 和 popover 之间的冲突

    我正在尝试在同一页面中使用 Twitter Bootstrap tabbable 和 Bootstrap popovers 我在解决弹出窗口无法出现在选项卡限制之外的问题时遇到困难 问题是当弹出窗口出现在边框旁边时 它是半隐藏的 我不是 J
  • 需要授予哪些权限才能访问 sys.dba_systems

    我正在开发适用于 Oracle 的应用程序 对于某种逻辑 我需要从给定的数据库用户获取具有指定模式的表列表 就我而言 我有一个已授予给定模式访问权限的用户 因此 当我的代码使用给定的凭据创建连接并尝试从以下查询中获取表时 它返回表列表 SE
  • Laravel 5 委托一条路由 - 根据角色加载不同的控制器

    所以我刚刚开始学习 Laravel 并且我已经实现了 Entrust Role Permission 包 效果非常好 现在我的问题是 我想要一个 仪表板 页面 如下所示 example com dashboard 问题是 我不确定如何设置
  • 如何在android中使线性布局部分透明?

    我有一个RelativeLayout含 2LinearLayouts其中一个部分覆盖另一个 我想做的一部分LinearLayout顶部透明 所以我也可以看到第二个LinearLayout 知道我有 2 张图像作为 2 张图像的背景Linea
  • bash 脚本根据文件名中的日期查找旧文件

    我正在开发一个 bash 脚本 该脚本需要根据一个变量搜索单个目录中 旧 的文件 该变量指定在超过阈值之前需要经过多少天 并且文件被标记为要执行操作 可以是任何内容 从移动到存档到删除 等等 问题是文件的修改时间与确定文件需要多久才能采取行
  • 将 gitlab 包注册表中的 python 包和其他外部索引直接包含到 setup.py 依赖项中

    The gitlab包注册表 https docs gitlab com ee user packages 可以用来publish https docs gitlab com ee user packages pypi repository
  • 如何将小程序作为应用程序运行?

    我有一个 Applet 类 我想让它作为应用程序运行 所以我编写了以下代码 public static void main String args JFrame app new JFrame Applet Container app set
  • 在 jboss 中加载 HTML 图像

    我有 HTML 页面 放在临时文件夹 WEB INF 目录之外 中 我在 HTML 页面中使用了一些图像 我也将这些图像放入临时文件夹中 然后创建了我的 war 文件 当我在 localhost 中运行该程序时 图像不会加载到 HTML 页
  • 如何在 JavaScript 中将所有对象属性设置为 null?

    我正在使用 Vue 突然使用一些计算的 cssvuetify https vuetifyjs com不管用 我声明对象的方式是 personal info 在我的模板中 我可以这样做personal info name以及每个文本输入 v
  • 在外部网络上托管 Expo 应用程序?

    我正在编写一个应用程序create react native app CRNA 为一家公司 最终 它可能会投入生产 但出于研究原因 我需要一个可以轻松部署到同事手机 Android 和 iOS 的工作原型 由于知识产权的原因 我不得在任何外
  • C#图表控件删除条形图中条形之间的空格

    I have a bar chart made with the c net chart control that looks like the following 正如您所看到的 图表上每对红色和蓝色条之间都有一个空格 有没有办法删除这些
  • Pandas 时间戳以 30 秒为单位不一致

    我试图将 pandas DatetimeIndex 或 Timestamp 舍入到最接近的分钟 但我遇到了 30 秒时间戳的问题 有些向上舍入 有些向下舍入 这似乎是交替的 有什么建议可以解决这个问题 以便 30 总是四舍五入吗 gt gt
  • 比较两个 Doctrine_Record 对象

    我如何比较两个Doctrine Record对象看看它们是否 相等 在我正在考虑的域登录中 如果两个对象具有相同的属性值 则它们相等 除了id和created at and updated at字段 a laTimestampable 我想
  • Django 迁移卡住了

    我有一个新字段要添加到我的数据库中 所以我说 python manage py makemigrations 这正确地创建了kernel migrations 0003 auto 20150726 1911 py 我检查了内容 一切看起来都
  • PostgreSQL 9.3:函数不唯一错误

    我创建了以下具有 11 个参数的函数 如下所示 函数调用 SELECT FROM function TableDetails NULL Type Table 2671ffdb 28a4 4ce4 a226 e5a21d66509e D096
  • 在android中录制原始视频格式

    我对安卓完全陌生 是否可以在 android 中从相机录制原始视频格式 基本上我有一个与 ICS 一起运行的 pandaboard 我连接了 USB 摄像头 iball 现在我想从 USB 摄像头录制原始视频格式 该相机支持原始视频格式我已
  • 是否有必要保护 JAX-RS 请求免受 CSRF 影响?

    是否有必要保护 JAX RS 请求免受攻击CSRF https en wikipedia org wiki Cross site request forgery By 定义 https en wikipedia org wiki Repre
  • Azure Function+ARM:将应用程序设置与当前设置合并

    我的部署分为两个管道 部署基础设施 运行ARM模板 部署和配置应用程序 上传应用程序 运行脚本 我的 ARM 模板包含一个 AppSettings 数组 如下所示 schema https schema management azure c
  • 如何使 CSS 网格容器保持响应式方形大小?

    I want grid container to maintain square shape So when screen is resized it will get bigger or smaller but it s height w
  • MySQL 每组前 2 条记录

    基本上 考虑到最后的创建日期时间 我只需要获取每个用户的最后 2 条记录 id user id created datetime 1 34 2015 09 10 2 34 2015 10 11 3 34 2015 05 23 4 34 20