使用 SQL for MySql 提取行,列中具有最大值和非值



我在 mysql 中有一个这样的表:

+----+------+-----------+----+----+-----+
| id | vers | doc       | pr | dd | f   |
+----+------+-----------+----+----+-----+
| 1  | 1    | doc1.pdf  | 1  | 1  | neg |
+----+------+-----------+----+----+-----+
| 2  | 1    | other.pdf | 1  | 3  | pos |
+----+------+-----------+----+----+-----+
| 3  | 1    | bo.pdf    | 1  | 6  | ok  |
+----+------+-----------+----+----+-----+
| 4  | 2    | doc2.pdf  | 1  | 1  | pos |
+----+------+-----------+----+----+-----+

如您所见,ID 为 1 和 4 的行具有相同的prdd值,但具有不同的vers

我想检索所有行,如果我有更多具有相同pr的行,并且dd我只想获取vers列中具有最大值的行。

所以在这个例子中,我想要 id 为 2、3 和 4 的行。

我可以使用 SQL 查询来执行此操作吗? 如果是,如何?

有一个子查询,返回每个 pr/dd 组合的最大 vers。加入该结果:

select t1.*
from tablename t1
join (select pr, dd, max(vers) as vers
from tablename
group by pr, dd) t2
on t1.pr = t2.pr
and t1.dd = t2.dd
and t1.vers = t2.vers

最新更新