MySQL在一个表中获得每个版本的最后2个

时间:2017-07-13 07:27:43

标签: mysql

我想检索一个过程的最后一个版本:

| id | name  | version | souce_id |
| 1  | test1 | 1.00    | 0        |
| 2  | test1 | 1.01    | 1        |
| 3  | test1 | 1.02    | 1        |
| 4  | test1 | 1.03    | 1        |
| 5  | test2 | 1.00    | 0        |
| 6  | test2 | 1.01    | 4        |
| 7  | test2 | 1.02    | 4        |
| 8  | test3 | 1.00    | 0        |

,预期结果为:

| id | name  | version | souce_id |
| 3  | test1 | 1.02    | 1        |
| 4  | test1 | 1.03    | 1        |
| 6  | test2 | 1.01    | 4        |
| 7  | test2 | 1.02    | 4        |
| 8  | test3 | 1.00    | 0        |

我已经写了这个查询,但我不喜欢它......我不能将它作为WHERE id IN (...)中的子查询包含在内。 id

2 个答案:

答案 0 :(得分:0)

E.g。

SELECT x.*
  FROM my_table x
  JOIN my_table y
    ON y.name = x.name
   AND y.id <= x.id
 GROUP
    BY x.id
 HAVING COUNT(*) <=2;

答案 1 :(得分:-1)

谢谢草莓! 只有一个小的修正,我有我的要求(你的是第2版):

select * 
from table1 
where contains(name , '"bob" AND "marly"')