簡體   English   中英

MySQL在一個表中獲得每個版本的2個倒數

[英]MySQL get the 2 last of each version in one table

我想檢索過程的最后2個版本:

| 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 (...) SELECT (SELECT SUBSTRING_INDEX(GROUP_CONCAT( id ORDER BY process_version DESC), ',', 2) FROM process WHERE process_name = parent . process_name ) AS ids FROM process AS parent WHERE 1 GROUP BY process_name

例如

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;

謝謝草莓! 稍加修正,我就收到了我的要求(您給了2個第1版):

SELECT `x`.*, `y`.`id`
  FROM `my_table` AS `x`
  JOIN `my_table` AS `y`
    ON `y`.`name` = `x`.`name`
    AND `y`.`id` >= `x`.`id`
GROUP BY `x`.`id`
HAVING COUNT(*) <=2  
ORDER BY `x`.`name` ASC, `x`.`version` ASC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM