MySQL选择具有特定修订版的行,如果没有,则返回LOWER修订版

时间:2014-03-27 14:35:03

标签: mysql sql

对于我的生活,我似乎无法弄清楚如何做到这一点。

想象一下,我有一张包含以下数据的表:

| id | revision | deleted | passage
-------------------------------------
| 22 |        1 |       0 | O Romeo, Romeo, wherefore art thou Romeo?
| 22 |        2 |       0 | Oh Romeo, why are you a Montague??
| 22 |        3 |       0 | Yo Romeo, why you all bein a Montague up in here?
| 39 |        1 |       0 | Call me Ishmael

在这个例子中,假设我想要所有版本2。由于ID 39没有修订版2,因此我将使用修订版1进行修订。

| id | revision | deleted | passage
-------------------------------------
| 22 |        2 |       0 | Oh Romeo, why are you a Montague??
| 39 |        1 |       0 | Call me Ishmael

我尝试过玩过' MAX'有限制的查询,但我似乎无法做到正确。我确定这是一个我想念的简单伎俩,但似乎无法找到它。

如果ID只是一个不同的版本,它将保持不变。 PK正在进行id-revision。

感谢您花时间阅读本文!

1 个答案:

答案 0 :(得分:0)

这是一种方法:

select t.*
from table t
where t.revision = (select max(revision)
                    from table t2
                    where t2.id = t.id and
                          t2.revision <= 2
                   );