连接 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 中表中的单行 的相关文章

  • 在 while 循环内查询可以吗?

    我在一个数据库中有两个表 我正在查询第一个表限制 10 然后循环结果 在 while 循环内 我使用第一个查询中的数据作为参数再次执行另一个查询 以下是该脚本的示例
  • MySQL-分割字符串

    我的问题与这篇文章类似 MySQL 中的 反向 GROUP CONCAT https stackoverflow com questions 17308669 reverse group concat in mysql 然而 而不是反转gr
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 我可以让 MySQL 数据库在插入语句后自动为列分配值吗?

    给定一个具有 ID pk 和 name 列的员工表 ID name 1 John 2 James 3 Tom Can I do INSERT INTO employee name VALUES Jack 并以某种方式让数据库自动分配下一个可
  • 在 PowerShell 中,将两个表合并为一个表的最佳方法是什么?

    我对 PowerShell 相当陌生 想知道是否有人知道解决以下示例问题的更好方法 我有一组从 IP 地址到主机名的映射 这表示活动 DHCP 租约的列表 PS H gt leases IP Name 192 168 1 1 Apple 1
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • 如何在MySQL选择查询中编写正则表达式?

    我尝试过这个表达 b word w b i比较一个word对照其他单词列表来查找重复项 我用了preg math all 效果很好 我想做同样的事情 但这次检查从 mysql 数据库检索到的单词 这是我写的 SELECT FROM tabl
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 如何将 LEFT JOIN 限制为 SQL Server 中的第一个结果?

    我有一些 SQL 几乎可以做我想做的事情 我正在使用三个表 Users UserPhoneNumbers 和 UserPhoneNumberTypes 我正在尝试获取用户列表及其电话号码以供导出 数据库本身很旧并且存在一些完整性问题 我的问
  • Mysql:计算访问频率

    我有这张桌子 CREATE OR REPLACE TABLE hits ip bigint page VARCHAR 256 agent VARCHAR 1000 date datetime 我想计算每个页面的 googlebot 访问频率
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary
  • 自动将范围内的值插入表中

    是否可以使用 MySQL 语句自动将值插入表中 即从 30 到 200 这是一个应该执行此操作的存储过程 CREATE PROCEDURE insert range BEGIN DECLARE i INT DEFAULT 30 WHILE
  • 可以有多个用户作为 MySQL 存储过程的定义者吗?

    我在 MySQL 存储过程方面遇到了一些困难 并且感到有点沮丧 我有一组由 Bob 创建的 SP 由于他是定义者 只有他才能看到它们的 CREATE 语句 修改它们等 Mary 可以在 MySQL Workbench 的架构中看到 Bob
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • 将程序存储在 phpMyAdmin 中

    我必须将存储过程添加到 MySQL 数据库 问题是托管提供php我的管理员来管理数据库 我在网上搜索了一下 想法是运行创建程序的MySQL本机语句 但由于程序的代码通常可能有 我们必须更改 MySQL 中的分隔符 php我的管理员没有这个选
  • 从 datagridview 选定的行更新 mysql 数据库

    我有一个 datagridview 它在表单加载事件上加载 mysql 数据库表 t pi clients 并且我有另一个选项卡 其中包含 t pi client 相应列的文本框 它能够从 fullrowselect 模式获取数据到这些文本
  • 强力查询历年产品利润对比

    我有一个数据集 其中包含公司 产品 利润和年份 公司每年都会销售少量产品并获得利润 公司没有必要在明年销售相同的产品 他们可能会省略以前的产品并添加新的少量产品 我只想对两年的产品进行逐个比较 如下所示 我的数据集是 Company Pro
  • 优化mysql中日期类型字段的查询

    我目前准备了以下查询 select sum amount as total from incomes where YEAR date 2019 and MONTH date 07 and incomes deleted at is null

随机推荐

  • 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 现