连接 MySQL 中表中的单行

2024-03-13

我有两张桌子players and scores.

我想生成一个如下所示的报告:

player    first score             points
foo       2010-05-20              19
bar       2010-04-15              29
baz       2010-02-04              13

现在,我的查询看起来像这样:

select p.name        player,
       min(s.date)   first_score,
       s.points      points    
from  players p    
join  scores  s on  s.player_id = p.id    
group by p.name, s.points

我需要s.points与该行关联的min(s.date)返回。这个查询会发生这种情况吗?也就是说,我如何确定我得到的是正确的s.points连接行的值?

旁注:我想这在某种程度上与 MySQL 缺乏密集的排名有关。这里最好的解决方法是什么?


这是 Stack Overflow 上经常出现的最大的每组问题。

这是我通常的回答:

select
  p.name        player,
  s.date        first_score,
  s.points      points

from  players p

join  scores  s
  on  s.player_id = p.id

left outer join scores  s2
  on  s2.player_id = p.id
      and s2.date < s.date

where
  s2.player_id is null

;

换句话说,给定分数 s,尝试找到同一玩家但日期更早的分数 s2。如果没有找到更早的分数,则 s 是最早的分数。


回复您对领带的评论:您必须制定一项政策,以便在出现领带时使用哪种政策。一种可能性是,如果您使用自动递增主键,则值最小的主键就是较早的主键。请参阅下面的外连接中的附加术语:

select
  p.name        player,
  s.date        first_score,
  s.points      points

from  players p

join  scores  s
  on  s.player_id = p.id

left outer join scores  s2
  on  s2.player_id = p.id
      and (s2.date < s.date or s2.date = s.date and s2.id < s.id)

where
  s2.player_id is null

;

基本上,您需要添加决胜局术语,直到您找到一个保证唯一的列,至少对于给定的玩家而言。表的主键通常是最好的解决方案,但我也见过其他列更合适的情况。

关于我与@OMG Ponies 分享的评论,请记住,这种类型的查询从正确的索引中受益匪浅。

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

连接 MySQL 中表中的单行 的相关文章

  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 仅使用扩展方法在 Linq 中进行漂亮、干净的交叉连接 [重复]

    这个问题在这里已经有答案了 可能的重复 使用扩展方法表示的嵌套 from LINQ 查询 https stackoverflow com questions 9115675 nested from linq query expressed
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • MySQL Connector/C++ 库链接错误问题

    PROBLEM 好吧 我一直在尝试遵循 MySQL Forge Wiki 和其他一些网站上的示例代码 这些网站提供了有关如何获得简单数据库连接的教程 但由于某种原因 我的项目总是因链接错误而失败 我可以我自己不明白为什么或如何解决它 我仍在
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • gem install mysql:无法构建 gem 本机扩展 (Mac Lion)

    我为 Mac OS X Lion 安装了 MySQL 5 5 27 来自 dmg 现在我尝试安装 mysql gem gem install mysql Building native extensions This could take
  • Flask-login:无法理解它是如何工作的

    我试图理解如何Flask Login https flask login readthedocs org en latest works 我在他们的文档中看到他们使用预先填充的用户列表 我想使用数据库存储的用户列表 但是 我不明白其中的一些
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F

随机推荐

  • pytz 在 Mac 上安装

    Django 通知我 ImportError 没有名为 pytz 的模块 但是当我使用 pip 安装它时 我得到以下结果 Requirement already satisfied use upgrade to upgrade pytz i
  • MySQL通过数组中的键搜索json值

    我有一个 JSON 对象数组 想要返回一个特定的节点 为了简化我的问题 假设数组可能如下所示 Race Orc strength 14 Race Knight strength 7 例如 我想知道骑士的实力 功能JSON SEARCH ht
  • 通过函数打开流

    我需要有关不可复制性质的帮助 io f streams 我需要提供一个黑客包装fstreams 以便在 Windows 上处理文件名中包含 unicode 字符的文件 为此 我设计了一个包装函数 bool open ifstream ist
  • ImportError:在 apache 上安装 django mod_wsgi 配置中没有名为 django.core.handlers.wsgi 的模块

    我尝试安装 django 以与 apache 和 mod wsgi 一起使用 但出现此错误 ImportError No module named django core handlers wsgi 我读到这可能是用户错误 在控制台 ssh
  • 从 Redis 中删除会话 (Django)

    我使用 Django 和 Redis 作为会话引擎 也是 Celery 但那是别的东西 它运行完美 我可以看到速度的提高 SESSION ENGINE django contrib sessions backends cached db 我
  • 需要哪些 Visual C++ DLL?

    我不喜欢必须为使用 Microsoft 编译器编译的程序分发安装程序 我更喜欢使用与可执行文件打包在同一目录中的 DLL 那么 MSVC 2010 所需的 DLL 是什么 没有一个简单的答案 因为这取决于您在程序中构建的依赖项 您可能想使用
  • 在 Laravel 5 或 4.3 中包含 CSS

    TL DR 在 Laravel 5 中链接到样式表的正确方法是什么 背景 我使用 Laravel 4 3 5 的开发版本 因为我想使用 Socialite 从一开始就使用它进行开发是有意义的 我在从 4 2 传输模板时遇到问题 我已将刀片布
  • 跟踪 python:仅包含一些文件

    我知道我可以用它来跟踪命令执行 python m trace t script py 但我想减少输出 只应显示我的 src pip install e 中的文件 我怎样才能做到这一点 如果您正在运行脚本bash你可以使用类似的东西 pyth
  • 模块“tensorflow.python.keras.api._v2.keras.layers”没有属性“CuDNNLSTM”

    当我写作时tf keras layers LSTM 我收到警告 Note that this layer is not optimized for performance Please use tf keras layers CuDNNLS
  • PHP 有没有办法在 foreach 中重新启动循环,或更改 switch 中的测试值?

    如果我正在循环一个数组 并且在其中一个循环的中间我发现一些小问题 改变 一些东西 并且需要重试 有没有办法跳回到循环顶部而不从数组中获取下一个值 我怀疑这是否存在 但它会是一些关键字 例如continue or break 事实上 它很像c
  • C# 的 CSV 解析器/阅读器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 astropy.table.columns 转换为 numpy 数组

    我想绘制points points np random multivariate normal mean 0 0 cov 0 4 9 9 10 size int 1e4 print points 2 50584156 2 77190372
  • PostgreSQL 没有自增功能?

    我有一个用 Java 编写的测试应用程序 用于在 MySQL PostgreSQL Oracle 和 Firebird 数据库 除其他外 中创建索引和非索引表 难道只是 PostgreSQL 不允许自动增量功能的情况吗 如果没有 拥有索引列
  • 等待 alamofire 完成获取请求并创建对象[重复]

    这个问题在这里已经有答案了 我在等待一个对象制作完成后遇到问题 然后我希望更新我的用户界面 如果我运行该函数 它将立即出现索引错误 因为它试图从第一个对象中获取一些文本 而该对象尚不存在 任何人都可以帮助我吗 func getMovieDa
  • Android 中的身份验证

    我正在使用客户端 Android 应用程序开发基于 Django 的 Web 应用程序 在 Web 端 身份验证是借助存储在 cookie 中的会话 ID 完成的 默认的 Django 实现 但我无法弄清楚如何在 Android 客户端中对
  • React Typescript 故事书通过 onChange 回调实现自定义输入组件,然后将 State 值返回到输入

    我目前正在用故事书实现一个 React 定制输入组件 我希望实现的是这个定制的输入组件将需要几个参数 其中一个参数是onChangeInput 稍后它将负责为 输入值 设置状态值 下面是我的主要输入组件实现 输入 tsx import Re
  • Pandas 将 groupby 之后的值计数扩展为列

    作为特征工程的一部分 我想使用 groupby 之后的列计数作为模型的特征 这是我尝试过的 gt gt gt import pandas as pd gt gt gt from collections import Counter gt g
  • 如何获取给定捕获的正则表达式组?

    我正在使用正则表达式解析 CSS3 选择器 例如 选择器a gt b c d分为 Selector a gt b c d SOSS a b c d TypeSelector a b c d Identifier a b c d Combin
  • 在 C++/CLI 包装类中翻译异常的最佳实践

    我正在为抛出异常的现有本机类编写 NET 包装类 在本机 C 异常和托管异常之间进行转换的最佳实践是什么 一对一地捕获并重新抛出 例如 std invalid argument gt System System ArgumentExcept
  • 连接 MySQL 中表中的单行

    我有两张桌子players and scores 我想生成一个如下所示的报告 player first score points foo 2010 05 20 19 bar 2010 04 15 29 baz 2010 02 04 13 现