mysql - 获取具有最大版本值但不活动的行

标签 mysql pdo max self-join

我确实有一张表,其中始终插入更改。为此,每次插入都会增加一个版本号,但总是手动将一个版本设置为事件版本。我现在想检索所有行,其中最高版本的行没有“active”=true。

| UID | Version | Active | Name  |
----------------------------------
| 001 |       1 | _      | Peter |
| 001 |       2 | X      | Paul  |
| 001 |       3 | _      | Petra |
| 002 |       1 | _      | Walt  |
| 002 |       2 | X      | Jan   |
| 003 |       1 | X      | Brad  |

查询结果应该只返回 uid 001,因为最大版本 3 未激活。

我假设我需要某种自连接?

感谢您对此的任何帮助!

最佳答案

你可以使用子查询和内连接

select uid, version
from my_table m
inner join  (
  select  uid, max(version) max_version
  from my_table 
  group by uid
) t ON t.uid = m.uid and t.max_version = m.version 
where active ='-'

关于mysql - 获取具有最大版本值但不活动的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045441/

相关文章:

mysql - 使用子查询使用同一个表中的值更新表

mysql - 在插入时创建 MySQL 触发器

python - 查找列表的最大值/最小值时管理空列表/无效输入(Python)

Python Min-Max 函数 - 列表作为返回最小和最大元素的参数

php - 使用mysql数据按高低价格排序

php - 使用 PDO 计算每个页面加载的查询数

php - 依赖嵌套 select 和删除 MySQL 语句中的多个表

mysql - 在mysql中选择最大记录

PHP 变量不会在后续查询中被覆盖

php - 从其 ID 返回数据库列的值