获取具有最大版本值但未激活的行

时间:2019-01-04 20:14:21

标签: 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处于不活动状态。

我认为我需要某种自我加入吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用子查询和内部联接

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 ='-'