MySQL在group by中选择最大记录

2023-11-26

我正在尝试在包含约 500,000 条记录和约 50 或 60 列的表中创建一个查询。我需要的是将这些记录整理成组并选择每个组中的最大记录。

为了简化问题我有一个表格如下

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  2 |        1004 |        2 | b      | 
|  3 |        1005 |        2 | c      | 
+----+-------------+----------+--------+

简单的group by如下

select * from temp GROUP BY group_id

返回

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  2 |        1004 |        2 | b      | 
+----+-------------+----------+--------+

不错,但不是我想要的。我想要的是每个组中 max Enternal_id 的完整记录。换句话说

+----+-------------+----------+--------+
| id | external_id | group_id | mypath |
+----+-------------+----------+--------+
|  1 |        1003 |        1 | a      | 
|  3 |        1005 |        2 | c      | 
+----+-------------+----------+--------+

不知何故,我希望在这里放置一个 max(external_id) 语句来过滤所需的内容,但到目前为止我所有的调查都失败了。一些指导将不胜感激。重要的是,当返回 max(external_id) 时,选择整个记录,因为路径列不同。


很多信息在http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/

这一直是 MySQL 中一个恼人的问题。有一些方法可以解决这个问题,例如将多个字段连接在一起(从 external_id 开始),然后选择其中的 MAX(),然后将其重新分开。

我建议您使用派生表。第一个表 (t1) 源自一个简单的查询,您可以在其中识别MAX(external_id),然后您从中加入以获取其余数据。

这只是如果external_id是独特的

SELECT 
   t1.group_id, some_table.id, some_table.mypath
FROM 
   (
      SELECT group_id, MAX(external_id) AS external_id
      FROM some_table
      GROUP BY group_id
   ) as t1
INNER JOIN 
   sometable ON t1.external_id = sometable.external_id
WHERE ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL在group by中选择最大记录 的相关文章

  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • ON DUPLICATE KEY UPDATE 的自动增量过多

    我有一个包含列的基本表 id 主要是AI 名称 唯一 etc 如果唯一列不存在 则插入该行 否则更新该行 INSERT INTO pages name etc VALUES bob randomness ON DUPLICATE KEY U
  • 无法在 Centos 上安装 php-mysqli 扩展

    我正在尝试将 mysqli 扩展安装到 php yum install php mysqli 我收到下一个错误 Transaction Check Error file usr share mysql charsets Index xml
  • 使用 PHP 运行 mysqldump 生成的空文件

    我不断收到运行时生成的空文件 command mysqldump opt h localhost u username p password dbname gt backup 2009 04 15 09 57 13 sql command
  • 将所有 PHP 错误输出到数据库而不是 error_log

    是否可以将所有 PHP 错误写入 MySQL 而不是标准的 error log 文件 我想如果我从头开始编写自己的错误处理程序 这是可能的 但我有很多遗留代码 理想情况下我只需进行 1 个全局更改即可 这可以做到吗 我认为如果不构建自己的错
  • 无法在 Windows 中安装 mysql-python(较新版本)

    I have mysql pythonv1 2 4 在我的机器 Windows 8 上安装得很好 我正在使用Python 2 7 每次尝试升级到 v1 2 5 时 我总是遇到以下错误 从 v1 3 7 开始仍然发生 C Users User
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • MYSQL 连接结果集在 IN () 期间在 where 子句中擦除结果?

    重磅编辑 最初的问题是基于对 IN 如何处理联接结果集中的列的误解 我认为 IN some join some column 会将结果列视为列表并循环遍历每一行 事实证明它只查看第一行 因此 改编后的问题是 MySQL 中是否有任何东西可以
  • 求R中3列中每一行的最大值

    我需要计算 3 列中每行的最大值 一个表可以是 x c 1 2 3 4 5 y c 2 3 3 1 1 z c 4 3 2 1 1 df lt data frame x y z 我需要得到 x y z max 1 1 2 4 4 2 2 3
  • 在 Symfony2 (Doctrine) 和 MySQL 中启用微秒

    我有一个具有一列 日期时间 类型的实体来存储时间戳 ORM Column type datetime protected timestamp 我有 MySQL 5 5 40 我发现它不存储微秒 所以我切换到 5 6 21 并导入了所有表格和
  • 如何将逗号分隔值传递给 MySql 中的存储过程?

    我有像这样的存储过程 CREATE DEFINER test PROCEDURE test get details in p istudid int in p icourseid int in p branchid varchar 20 B
  • 致命错误:在非对象上调用成员函数 FetchRow()

    这是我的错误消息致命错误 Call to a member function FetchRow on a non object in C AppServ www hfix include care api classes class min
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include
  • 如何修复在 AWS RDS 上锁定表名称创建 (errno: -1) 的 InnoDB 损坏?

    TIP Do not run ALTERMySQL Workbench 中用于 标准 TCP IP over SSH 连接的语句 最好是进入服务器并运行ALTER从那里 这样 如果您失去与服务器的连接 ALTER仍应完成其工作 我正在尝试在
  • 即使为空也显示值

    我正在使用以下内容显示过去 7 天内添加的产品计数 即使 COUNT 0 我是否可以以某种方式定制查询以显示过去 7 天的所有产品 查询现状 SELECT DAYNAME dateadded DAY COUNT COUNT FROM pro
  • MySQL 错误:1395 无法从连接视图中删除

    我正在尝试从通过连接多个表生成的视图中删除一条记录 我有一个新用户要在此特定视图上删除和插入 我可以将记录插入视图 但无法从视图中删除 您能指出下面这段 SQL 语句中的错误吗 create view v1 as select a from
  • PHP、MySQL 验证故障且搜索不起作用?

    我创建了一个小的注册粘性表格 一切工作正常 但如果我输入任何错误的值 例如姓名中的数字 年龄中的字母甚至错误的电子邮件格式 那么数据仍然保存在数据库中 我无法找出验证问题 另外一个是搜索选项 每当我在搜索框中输入任何名字或姓氏时 它都应该显
  • Django 在第二个数据库上调用存储过程

    我试图在多数据库 Django 安装上调用存储过程 但没有获得结果 存储过程 位于辅助数据库上 在 Django 中始终返回一个空数组 但在 mysql 客户端中执行时确实会出现预期结果 My view py文件 从 SomeDBModel
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • mysql 中的 SELECT UNION 和 ORDER BY.. 如何?

    我想从单个表中获取所有行 但以不同的方式对它们进行排序 例如我写 SELECT FROM table1 ORDER BY fieldA ASC LIMIT 3 UNION SELECT FROM table1 ORDER BY FieldB

随机推荐

  • SVN 到 Clearcase 导出

    我有一位客户非常坚持使用 Clearcase 是否有任何工具 脚本可以让我的团队针对 SVN 存储库 或者实际上anything除了 Clearcase 之外 但会定期自动将变更集同步回 Clearcase VOB 我的想法是 如果存在这样
  • 将 python 中的嵌套列表中的每个元素从 string 转换为 int [重复]

    这个问题在这里已经有答案了 我有带有嵌套列表的 python 数据 其中一部分如下所示 data 214 205 0 14 710 1813494849 0 214 204 0 30 710 1813494856 0 214 204 0 3
  • 如何从 ast.FunctionDef 节点创建函数对象?

    我试图了解 python 代码的执行过程 假设源有一个函数定义 使用ast parse 我将其解析为一个 ast 其中将包含一个实例FunctionDef节点类 该节点实例不是可调用的 并且与函数对象不同 如何从这个 ast 创建函数对象及
  • Linq 异常:只能从 linq to 实体调用函数

    我有一个StudentReceipts存储的表ReceiptNo as string 001 002 003 099 我想要获取最后一张收据的详细信息 以便增加下一笔交易的收据编号 这是我尝试过的 var lastGeneratedRecD
  • 将html表导出到Excel javascript函数特殊字符已更改

    我有以下将 html 导出到 Excel 的函数 function generateexcel tableid var table document getElementById tableid var html table outerHT
  • 删除 Github 中的自定义域

    我想从 Github 中删除自定义域 请提供任何帮助 其实我想得到https myaseen208 github io DialelAnalysisR 而不是http www myaseen208 com DialelAnalysisR 如
  • 亿级记录批量插入

    将 2 37 亿条记录插入具有规则 用于跨子表分配数据 的表中的最快方法是什么 我曾经尝试过或考虑过 插入语句 事务性插入 BEGIN and COMMIT The COPY FROM命令 http pgbulkload projects
  • HTML5 CANVAS 绘制图像

    这是我的问题 我有点不明白下面函数中的 sx 和 sy 是什么意思 context drawImage 图像 sx sy sw sh dx dy dw dh 我真正的意思是 如果我们改变 sx 和 sy 的值 并将 dx 和 dy 设置为固
  • 从 HttpServletRequest 对象获取发布的 XML

    我有一个接收 HttpServletRequest 的过滤器 该请求是一个 POST 其中包含一个我需要读入过滤器方法的 xml 从 HttpServletRequest 对象获取发布的 xml 的最佳方法是什么 这取决于客户如何发送它 如
  • 尽管元组是不可变的,但它们在交互模式下存储在不同的地址中。为什么?

    t 1 2 3 t1 1 2 3 print id t print id t1 上面几行代码在Python中的脚本模式下给出了相同的地址 但在交互模式下它输出了不同的地址 谁能解释一下原因吗 当编译脚本时 编译器可以搜索所有等效的元组并生成
  • Vue.js 如何在 v-for 循环中使用单选按钮

    我正在尝试使用单选按钮 以便用户可以选择其中一张照片作为他们的个人资料照片 ul li div div div photo id p imgId div div div li ul
  • 如何在 R 中同时按两列对行进行排序?

    以下是根据 v2 列进行排名的代码 x lt data frame v1 c 2 1 1 2 v2 c 1 1 3 2 x rank1 lt rank x v2 ties method first 但我真的想根据 v2 和 然后 v1 进行
  • SQL 中的分层标记

    我有一个 PHP Web 应用程序 它使用 MySQL 数据库进行对象标记 其中我使用了被接受为答案的标记结构这个问题 我想实现一个标签层次结构 其中每个标签都可以有一个唯一的父标签 然后 搜索父标签 T 将匹配 T 的所有后代 即 T 父
  • Roslyn 分析器规则不会使构建失败

    继从this来自 MS 的教程 我为 Roslyn 创建了一个分析器 根据页面 您可以将规则标记为DiagnosticSeverity Error 这将导致构建中断 在声明规则字段的行中 您还可以将要生成的诊断的严重性更新为错误而不是警告
  • 如何从pom.xml获取属性值?

    我在 pom xml 中添加了一个节点
  • 将 2D javascript 数组导出到 Excel 工作表

    我知道 这里有数百个关于这个主题的问题 但经过一天的搜索 我仍然找不到满意的答案 我有一个 2D javascript 数组 我想将其下载为 Excel 工作表 这是我迄今为止得到的代码的一个小提琴 https jsfiddle net 3
  • ThreeJS 3D 对象的 2D 边界框

    我需要找出我的 3D 对象使用的屏幕区域 我尝试用谷歌搜索答案 但没有成功 功能geometry computeBoundingBox 仅返回 3D 边界框 我怎样才能将其转换为二维边界框 您只需将所有顶点转换为屏幕空间并根据它们创建 2D
  • SwiftUI 全屏 UIImagePickerController(相机)

    我提出一个UIImagePickerController在我的应用程序中 通过在 a 中呈现逻辑sheet修饰符 简而言之 以下三种类型处理显示和消除实例UIImagePickerController里面的一个UIViewControlle
  • Err.Raise() 忽略自定义描述和源

    我有一个带有 Let 函数的类模块 该函数会引发自定义错误 示例如下所示 Private pValue As Double Public Property Let Value v As Double If v lt 0 Then Err R
  • MySQL在group by中选择最大记录

    我正在尝试在包含约 500 000 条记录和约 50 或 60 列的表中创建一个查询 我需要的是将这些记录整理成组并选择每个组中的最大记录 为了简化问题我有一个表格如下 id external id group id mypath 1 10