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

Get row which has max version value but isn't active

我有一个 table 始终插入更改的地方。为此,每次插入都会增加一个版本号,但总是手动将一个版本设置为活动版本。我现在想检索最高版本的行没有 '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  |

查询结果应该只有 return 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 ='-'